From 3824231cf23249500d9d0fe89c679b9c7dac5970 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 | 22 +- tests/resources/csw_iso_identifier.xml | 607 +++++++++++++++++++++++++ tests/test_iso_parsing.py | 18 + 3 files changed, 643 insertions(+), 4 deletions(-) create mode 100644 tests/resources/csw_iso_identifier.xml diff --git a/owslib/iso.py b/owslib/iso.py index c30a4c88..d1d191d9 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( @@ -424,17 +424,31 @@ def __init__(self, md=None, identtype=None): 'gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gmx:Anchor', namespaces)) for i in _values: - val = util.testXMLValue(i.attrib.get('xlink:href'), True) - if val is not None: + val = util.testXMLValue(i) + val1 = i.attrib.get(util.nspath_eval('xlink:href', namespaces)) + if val1 not in [None,'']: + self.uricode.append(val1) + elif val not in [None,'']: self.uricode.append(val) + self.uricodespace = [] for i in md.findall(util.nspath_eval( '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) + val1 = i.attrib.get(util.nspath_eval('xlink:href', namespaces)) + if val1 not in [None,'']: + self.uricode.append(val1) + elif val not in [None,'']: + self.uricode.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..737539ee 100644 --- a/tests/test_iso_parsing.py +++ b/tests/test_iso_parsing.py @@ -595,3 +595,21 @@ 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 identifier where the id is defined by a + gmx:Anchor + + MD_Metadata record available in + tests/resources/csw_iso_identifier.xml + + """ + md_resource = get_md_resource( + 'tests/resources/csw_iso_identifier.xml') + md = MD_Metadata(md_resource) + assert type(md) is MD_Metadata + assert md.referencesystem.code == 'ETRS89-GRS80' + iden = md.identification[0] + assert_list(iden.uricode, 1) + assert iden.uricode[0] == 'https://www.nationaalgeoregister.nl/geonetwork/srv/metadata/f44dac86-2228-412f-8355-e56446ca9933' + \ No newline at end of file