From 06261a546ae1d1eb17a599c6d6dbe82f09b1413d Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Tue, 8 Oct 2024 10:02:49 +0200 Subject: [PATCH] add tests for anchor tests --- owslib/iso.py | 13 +- tests/resources/csw_iso_identifier.xml | 607 +++++++++++++++++++++++++ tests/test_iso_parsing.py | 28 ++ 3 files changed, 645 insertions(+), 3 deletions(-) create mode 100644 tests/resources/csw_iso_identifier.xml diff --git a/owslib/iso.py b/owslib/iso.py index c30a4c88..7fac8ea3 100644 --- a/owslib/iso.py +++ b/owslib/iso.py @@ -414,7 +414,7 @@ def __init__(self, md=None, identtype=None): namespaces)) for i in _values: val = util.testXMLValue(i) - if val is not None: + if val not in [None,'']: self.uricode.append(val) _values = md.findall(util.nspath_eval( @@ -425,7 +425,7 @@ def __init__(self, md=None, identtype=None): namespaces)) for i in _values: val = util.testXMLValue(i.attrib.get('xlink:href'), True) - if val is not None: + if val not in [None,'']: self.uricode.append(val) self.uricodespace = [] @@ -433,9 +433,16 @@ def __init__(self, md=None, identtype=None): 'gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString', namespaces)): val = util.testXMLValue(i) - if val is not None: + if val not in [None,'']: + self.uricodespace.append(val) + for i in md.findall(util.nspath_eval( + 'gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:codeSpace/gmx:Anchor', + namespaces)): + val = util.testXMLValue(i.attrib.get('xlink:href'), True) + if val not in [None,'']: self.uricodespace.append(val) + self.date = [] self.datetype = [] diff --git a/tests/resources/csw_iso_identifier.xml b/tests/resources/csw_iso_identifier.xml new file mode 100644 index 00000000..64dc86fc --- /dev/null +++ b/tests/resources/csw_iso_identifier.xml @@ -0,0 +1,607 @@ + + + + f44dac86-2228-412f-8355-e56446ca9933 + + + Nederlands; Vlaams + + + dataset + + + + + + + + Ministerie van Defensie, Koninklijke Marine, Dienst der Hydrografie + + + Hoofd Gegevens Beheer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + niet beschikbaar + + + + + + + https://www.defensie.nl/onderwerpen/hydrografie/downloads/publicaties/2024/07/25/beschikbaarheid-online-van-data-van-de-dienst-der-hydrografie + + + + + + + contactpunt + + + + + 2024-08-28 + + + ISO 19115 + + + Nederlands metadata profiel op ISO 19115 voor geografie 2.1.0 + + + + + + + ETRS89-GRS80 + + + + + + + + + + + Eemsmonding volgens het Eems-Dollardverdrag + + + + + 2020-10-05 + + + revisie + + + + + + + b3ed10bc-479a-4277-9683-56c908a7fa83 + + + + + + + Eemsmonding volgens het Eems-Dollardverdrag + + + + + + continu geactualiseerd + + + + + Ministerie van Defensie, Koninklijke Marine, Dienst der Hydrografie + + + Ministerie van Defensie, Koninklijke Marine, Dienst der Hydrografie + + + Hoofd Gegevens Beheer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + niet beschikbaar + + + + + + + https://www.defensie.nl/onderwerpen/hydrografie/downloads/publicaties/2024/07/25/beschikbaarheid-online-van-data-van-de-dienst-der-hydrografie + + + + + + + contactpunt + + + + + + + 5-jaarlijks + + + 2020 + + + + + + + Gebiedsbeheer, gebieden waar beperkingen gelden, gereguleerde gebieden en rapportage-eenheden + + + theme + + + + + GEMET - INSPIRE themes, version 1.0 + + + + + 2008-06-01 + + + publicatie + + + + + + + geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme + + + + + + + + + + + Eems-Dollardverdrag + + + Eems + + + Dollard + + + basisset NOVEX + + + + + + + Nationaal + + + theme + + + + + Ruimtelijke dekking + + + + + 2019-05-22 + + + publicatie + + + + + + + geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope + + + + + + + + + + + + + + + + + + + De verstrekte gegevens mogen niet gebruikt worden als middel om mee te navigeren, aangezien zij op zichzelf staan en niet bijgewerkt zijn conform de Berichten aan Zeevarenden. + + + De Dienst der Hydrografie behoudt zich het recht voor haar Morele rechten (art. 6 bis Conventie van Bern) uit te oefenen op het gereproduceerde materiaal, waarin de verstrekte gegevens verwerkt zijn. + + + + + + + anders + + + Geen beperkingen + + + Er zijn geen condities voor toegang en gebruik + + + + + + + anders + + + Geen beperkingen voor publieke toegang + + + + + + + + + + + + + + + + vector + + + + + + + 50000 + + + + + + + Nederlands; Vlaams + + + utf8 + + + oceans + + + + + Noordzee en binnenwater + + + + + 2.4506 + + + 7.9872 + + + 50.9152 + + + 54.0807 + + + + + + + + + + + + + + gml+xml + + + GML, version 3.2.1 + + + Data specificatie hydrografie + + + + + + + + + + + + + Hoofd Gegevens Beheer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hydrologistiek@mindef.nl + + + + + + + www.defensie.nl/hydro + + + + + + + distributeur + + + + + + + + + + + https://inspire1.bathy.online/geoserver/MarineRegion/wms?service=WMS&version=1.3.0&request=GetCapabilities + + + OGC:WMS + + + view + + + ManagementRestrictionOrRegulationZone + + + Marine Region + + + + + + + https://inspire1.bathy.online/geoserver/MarineRegion/wfs?service=WFS&version=2.0.0&request=GetCapabilities + + + OGC:WFS + + + download + + + MarineRegion:ManagementRestrictionOrRegulationZone + + + Marine Region + + + + + + + https://inspire1.bathy.online/atom/b3ed10bc-479a-4277-9683-56c908a7fa83.atom + + + INSPIRE Atom + + + download + + + ManagementRestrictionOrRegulationZone + + + accessPoint + + + download + + + + + + + dvd + + + + + + + + + + + + + dataset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VERORDENING (EU) Nr. 1089/2010 VAN DE COMMISSIE van 23 november 2010 ter uitvoering van Richtlijn 2007/2/EG van het Europees Parlement en de Raad betreffende de interoperabiliteit van verzamelingen ruimtelijke gegevens en van diensten met betrekking tot ruimtelijke gegevens + + + + + 2010-12-08 + + + publicatie + + + + + + + Dataset is geharmoniseerd + + + true + + + + + + + + + + + + + + Ministerie van Defensie, Koninklijke Marine, Dienst der Hydrografie + + + + + + + + + + diff --git a/tests/test_iso_parsing.py b/tests/test_iso_parsing.py index 6997c6da..37b05c3e 100644 --- a/tests/test_iso_parsing.py +++ b/tests/test_iso_parsing.py @@ -595,3 +595,31 @@ def test_md_parsing_keywords_no_anchor(): assert iden.keywords[1].keywords[1].url is None assert iden.keywords[1].keywords[2].name == 'parcelles cadastrales' assert iden.keywords[1].keywords[2].url is None + +def test_md_indentifier_anchor(): + """Test the parsing of MD_Keywords where the keyword is not defined by a + gmx:Anchor + + MD_Metadata record available in + tests/resources/csw_geobretagne_mdmetadata.xml + + """ + md_resource = get_md_resource( + 'tests/resources/csw_iso_identifier.xml') + md = MD_Metadata(md_resource) + assert type(md) is MD_Metadata + + + # gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gmx:Anchor = 'http://www.opengis.net/def/crs/EPSG/0/4937' + assert md.referencesystem.code == 'ETRS89-GRS80' + # gmd:identifier/gmd:MD_Identifier/gmd:code/gmx:Anchor = 'https://www.nationaalgeoregister.nl/geonetwork/srv/metadata/f44dac86-2228-412f-8355-e56446ca9933' + iden = md.identification[0] + assert iden.uricode[0] == 'https://www.nationaalgeoregister.nl/geonetwork/srv/metadata/f44dac86-2228-412f-8355-e56446ca9933' + + # gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gmx:Anchor = 'http://standaarden.overheid.nl/owms/terms/Ministerie_van_Defensie' + # gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gmx:Anchor = 'http://creativecommons.org/publicdomain/mark/1.0/deed.nl' + # gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name/gmx:Anchor = 'http://www.iana.org/assignments/media-types/application/gml+xml' + # gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:specification/gmx:Anchor = 'http://inspire.ec.europa.eu/id/document/tg/hy' + # gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:protocol/gmx:Anchor = 'http://www.opengis.net/def/serviceType/ogc/wms' + # gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/applicationProfile/gmx:Anchor = 'http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType/view' + # gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/description/gmx:Anchor = 'http://inspire.ec.europa.eu/metadata-codelist/OnLineDescriptionCode/accessPoint'