Changeset 1944 for TI07-MOLES/trunk


Ignore:
Timestamp:
03/01/07 16:29:43 (13 years ago)
Author:
mpritcha
Message:

Corrected DublinCoreDEQuery for type of .../RecordUpdate/UpdateDate? which should be xs:dateTime not xs:date (according to current version of schema).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/JavaCode/bulkdestubbxmldb/ndg/services/bulkdestubb/Main.java

    r1920 r1944  
    4747        static String StubBObsStnQuery = "declare default element namespace 'http://ndg.nerc.ac.uk/moles/observationstation';declare namespace moles='http://ndg.nerc.ac.uk/moles';declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions';declare function f:strip-namespace($e as element()) as element(){element {QName('', local-name($e))}{let $parent :=$e let $childcount := count($parent/*) return if ($childcount>0) then for $child in ($e/*) return f:strip-namespace($child) else (data($e))}};declare function f:return-stub-activity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}}else (for $SRAct in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name} {($SRAct/moles:dgMetadataID),($SRAct/moles:dgMetadataDescription),($SRAct/moles:name),($SRAct/moles:abbreviation),element dgActivity {if (exists($SRAct/*/moles:dgActivityDataCollection)) then ($SRAct/*/moles:dgActivityDataCollection) else if (exists($SRAct/*/moles:dgActivityDataProject)) then ($SRAct/*/moles:dgActivityDataProject) else if (exists($SRAct/*/dgActivityDataCampaign)) then ($SRAct/moles:dgActivity/moles:dgActivityDataCampaign) else ($SRAct/moles:dgActivity/moles:dgActivityDataInvestigation),($SRAct/moles:dgActivity/moles:dgActivityCoverage),($SRAct/moles:dgActivity/moles:dgActivityDuration)}})};declare function f:return-stub-dataentity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}} else (for $SRDE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name} {($SRDE/moles:dgMetadataID),($SRDE/moles:dgMetadataDescription),($SRDE/moles:name),($SRDE/moles:abbreviation),element dgDataEntity {($SRDE/moles:dgDataEntity/moles:dgDataSetType),($SRDE/moles:dgDataEntity/moles:dgDataGranule),($SRDE/moles:dgDataEntity/moles:dgDataSummary)}})};declare function f:return-stub-dpt($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}} else (for $SRDPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name} {$SRDPT/moles:dgMetadataID,$SRDPT/moles:dgMetadataDescription,$SRDPT/moles:name,$SRDPT/moles:abbreviation,$SRDPT/moles:logos,element dgDataProductionTool {$SRDPT/moles:dgDataProductionTool/moles:contactDetails,if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then $SRDPT/moles:dgDataProductionTool/moles:dgModel else (),if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then $SRDPT/moles:dgDataProductionTool/moles:dgInstrument else ()}})};declare function f:return-stub-obsstn($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}} else (for $SRObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name} {($SRObsStn/moles:dgMetadataID),($SRObsStn/moles:dgMetadataDescription),($SRObsStn/moles:name),($SRObsStn/moles:abbreviation),element dgObservationStation {($SRObsStn/moles:dgObservationStation/moles:contactDetails),if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then element dgStationaryPlatform {$SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position,if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} else ()} else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform else ()}})};declare function f:return-stub-person($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}} else (for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name}{($person/moles:name),($person/moles:contactDetails),($person/moles:dgMetadataID)})};declare function f:return-stub-organisation($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element(){let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid]) return if ($found = 0) then element {$out-element-name} {element error {'not found'},element repositoryIdentifier {$repid},element localIdentifier {$locid}} else (for $org in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[moles:dgMetadataID/moles:repositoryIdentifier=$repid and moles:dgMetadataID/moles:localIdentifier=$locid] return element {$out-element-name} {$org/moles:dgMetadataID,$org/moles:name,$org/moles:abbreviation,$org/moles:contactDetails,$org/moles:logos})};for $ObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgObservationStation!='' and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier='RepositoryID' and moles:dgMetadataID/moles:localIdentifier='LocalID'] return f:strip-namespace(element dgMetadataRecord {element dgMetadataID {element schemeIdentifier {'NDG-B1',$ObsStn/moles:dgMetadataID/moles:repositoryIdentifier,$ObsStn/moles:dgMetadataID/moles:localIdentifier},$ObsStn/moles:dgMetadataDescription,$ObsStn/moles:name,$ObsStn/moles:abbreviation,element dgObservationStation {$ObsStn/moles:dgObservationStation/moles:contactDetails,if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then element dgStationaryPlatform {$ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position,if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring)) then element dgMooring {$ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dateStart,$ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dateEnd,for $DepositingCruise in $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:DepositingCruise return f:return-stub-activity('depositingcruise', data($DepositingCruise/moles:dgMetadataID/moles:repositoryIdentifier), data($DepositingCruise/moles:dgMetadataID/moles:localIdentifier)),if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dgStationGrouping)) then for $StationGrouping in $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/dgStationGrouping return f:return-stub-obsstn('stationgrouping', data($StationGrouping/moles:dgMetadataID/moles:repositoryIdentifier), data($StationGrouping/moles:dgMetadataID/moles:localIdentifier)) else ()} else if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {element dgGroupedStations {if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStations)) then for $GroupedStation in $ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStation/dgGroupedStations return f:return-stub-obsstn('dgGroupedStation', data($GroupedStation/moles:dgMetadataID/moles:repositoryIdentifier), data($GroupedStation/moles:dgMetadataID/moles:localIdentifier)) else ()}} else $ObsStn/moles:dgObservationStation/moles:dgLandStation} else $ObsStn/moles:dgObservationStation/moles:dgMovingPlatform},for $RelDep in $ObsStn/moles:dgObservationStation/moles:ObsStationDeployment return element ObsStationDeployment {$RelDep/moles:DateStart,$RelDep/moles:DateEnd,$RelDep/moles:dgMetadataID,f:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)),f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)),for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier return f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)),$RelDep/moles:Coverage}},for $strkwrd in $ObsStn/moles:dgStructuredKeyword return $strkwrd,if (exists($ObsStn/moles:dgMetadataProvenance)) then $ObsStn/moles:dgMetadataProvenance else (),if (exists($ObsStn/moles:dgMetadataSecurity)) then $ObsStn/moles:dgMetadataSecurity else ()})"; 
    4848        static String MOLESQuery = "declare default element namespace 'http://ndg.nerc.ac.uk/moles';for $Moles in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='RepositoryID' and dgMetadataID/localIdentifier='LocalID'] return $Moles"; 
    49         static String DublinCoreDEQuery = "declare default element namespace 'http://ndg.nerc.ac.uk/moles'; declare namespace dc='http://purl.org/dc/elements/1.1/'; declare namespace oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc'; declare variable $gcmd_science_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'}; declare variable $gcmd_project_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/projects.html'}; declare variable $cf_standard_names as xs:string {'http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html'}; declare variable $iso_topic_list as xs:string {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'}; for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgDataEntity!='' and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='RepositoryID' and dgMetadataID/localIdentifier='LocalID'] return <oai_dc:dc xmlns:oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc/' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd'> { element dc:title {string($DE/name)}, element dc:type {'Dataset'}, element dc:identifier {concat($DE/dgMetadataID/repositoryIdentifier, ':DC:', $DE/dgMetadataID/localIdentifier)}, element dc:description {string($DE/dgMetadataDescription/abstract/abstractText)}, element dc:date { if (exists($DE/(dgMetadataProvenance | DataProvenance)/RecordUpdate/UpdateDate)) then for $updatedate in $DE/(dgMetadataProvenance | DataProvenance)/RecordUpdate/UpdateDate order by xs:date($updatedate) descending return xs:date($updatedate[1]) else string($DE/(dgMetadataProvenance | DataProvenance)/RecordCreation/CreatedDate) }, for $StructuredKeyword in distinct-values($DE/dgStructuredKeyword [dgValidTermID/ParentListID=$cf_standard_names or dgValidTermID/ParentListID=$gcmd_science_valids or dgValidTermID/ParentListID=$gcmd_project_valids or dgValidTermID/ParentListID=$iso_topic_list ]//dgValidTerm) order by $StructuredKeyword return element dc:subject {string($StructuredKeyword)}, for $StructuredKeyword1 in distinct-values($DE/dgDataEntity/dgDataSummary/dgParameterSummary/dgStdParameterMeasured[dgValidTermID/ParentListID=$cf_standard_names or dgValidTermID/ParentListID=$gcmd_science_valids or dgValidTermID/ParentListID=$gcmd_project_valids]//dgValidTerm) order by $StructuredKeyword1 return element dc:subject {string($StructuredKeyword1)}, for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder order by $DataCreatorRole/startDate empty least return for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson) [(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$DataCreatorRole/(dgOrganisationID | dgPersonID)/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCreatorRole/(dgOrganisationID | dgPersonID)/localIdentifier)] return element dc:creator { if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then (string($DataCreatorRoleHolder/name)) else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then (string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName)))) else ('empty content') }, for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] order by $DataCuratorRole/startDate empty least return for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson) [(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$DataCuratorRole/(dgOrganisationID | dgPersonID)/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCuratorRole/(dgOrganisationID | dgPersonID)/localIdentifier)] return element dc:publisher { if (string(local-name($DataCuratorRoleHolder))='dgOrganisation') then (string($DataCuratorRoleHolder/name)) else if (string(local-name($DataCuratorRoleHolder))='dgPerson') then (string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))) else ('empty content') } } </oai_dc:dc>"; 
     49        static String DublinCoreDEQuery = "declare default element namespace 'http://ndg.nerc.ac.uk/moles'; declare namespace dc='http://purl.org/dc/elements/1.1/'; declare namespace oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc'; declare variable $gcmd_science_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'}; declare variable $gcmd_project_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/projects.html'}; declare variable $cf_standard_names as xs:string {'http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html'}; declare variable $iso_topic_list as xs:string {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'}; for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgDataEntity!='' and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='RepositoryID' and dgMetadataID/localIdentifier='LocalID'] return <oai_dc:dc xmlns:oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc/' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd'> { element dc:title {string($DE/name)}, element dc:type {'Dataset'}, element dc:identifier {concat($DE/dgMetadataID/repositoryIdentifier, ':DC:', $DE/dgMetadataID/localIdentifier)}, element dc:description {string($DE/dgMetadataDescription/abstract/abstractText)}, element dc:date { if (exists($DE/(dgMetadataProvenance | DataProvenance)/RecordUpdate/UpdateDate)) then for $updatedate in $DE/(dgMetadataProvenance | DataProvenance)/RecordUpdate/UpdateDate order by xs:dateTime($updatedate) descending return xs:dateTime($updatedate[1]) else string($DE/(dgMetadataProvenance | DataProvenance)/RecordCreation/CreatedDate) }, for $StructuredKeyword in distinct-values($DE/dgStructuredKeyword [dgValidTermID/ParentListID=$cf_standard_names or dgValidTermID/ParentListID=$gcmd_science_valids or dgValidTermID/ParentListID=$gcmd_project_valids or dgValidTermID/ParentListID=$iso_topic_list ]//dgValidTerm) order by $StructuredKeyword return element dc:subject {string($StructuredKeyword)}, for $StructuredKeyword1 in distinct-values($DE/dgDataEntity/dgDataSummary/dgParameterSummary/dgStdParameterMeasured[dgValidTermID/ParentListID=$cf_standard_names or dgValidTermID/ParentListID=$gcmd_science_valids or dgValidTermID/ParentListID=$gcmd_project_valids]//dgValidTerm) order by $StructuredKeyword1 return element dc:subject {string($StructuredKeyword1)}, for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder order by $DataCreatorRole/startDate empty least return for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson) [(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$DataCreatorRole/(dgOrganisationID | dgPersonID)/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCreatorRole/(dgOrganisationID | dgPersonID)/localIdentifier)] return element dc:creator { if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then (string($DataCreatorRoleHolder/name)) else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then (string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName)))) else ('empty content') }, for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] order by $DataCuratorRole/startDate empty least return for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson) [(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$DataCuratorRole/(dgOrganisationID | dgPersonID)/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCuratorRole/(dgOrganisationID | dgPersonID)/localIdentifier)] return element dc:publisher { if (string(local-name($DataCuratorRoleHolder))='dgOrganisation') then (string($DataCuratorRoleHolder/name)) else if (string(local-name($DataCuratorRoleHolder))='dgPerson') then (string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))) else ('empty content') } } </oai_dc:dc>"; 
    5050        static String DIFQuery = "declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/';declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';declare namespace moles='http://ndg.nerc.ac.uk/moles';declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions';for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[exists('moles:dgDataEntity')  and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  and moles:dgMetadataID/moles:repositoryIdentifier='RepositoryID'  and moles:dgMetadataID/moles:localIdentifier='LocalID'] return element DIF {attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'},element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)},element Entry_Title {string($DE/moles:name)},element Data_Set_Citation {for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1] return  for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)] return  element Data_Creator {if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))) else  string($DataCreatorRoleHolder/moles:abbreviation)},element Dataset_Title {string($DE/moles:name)}},for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and moles:ListLevel = 0]) return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then  element Parameters {element Category {string($StructuredKeyword/*/moles:dgValidTerm)},if (exists($StructuredKeyword//moles:dgValidSubterm)  and $StructuredKeyword//moles:dgValidSubterm != ''  and $StructuredKeyword//moles:dgValidSubterm != ' ') then  for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)] where exists($Subterm/moles:dgValidSubterm) order by $Subterm/moles:ListLevel return  if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} else()} else(),for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[moles:dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) return  element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)},for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[ moles:dgValidTermID/moles:ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'  and  moles:dgValidTermID/moles:ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'  ]/moles:dgValidTerm) return element Keyword {string($Keyword)},  for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID)  return  element Sensor_Name {for $DepDPTAbbrev in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) return element Short_Name {data($DepDPTAbbrev)},for $DepDPTName in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) return element Long_Name {data($DepDPTName)}},for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID) return  element Source_Name {for $DepObsStnAbbrev in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) return element Short_Name {data($DepObsStnAbbrev)},for $DepObsStnName in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) return element Long_Name {data($DepObsStnName)}},for $TemporalRange in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgDateRange) return  element Temporal_Coverage {element Start_Date {data($TemporalRange/moles:DateRangeStart)},element End_Date {data($TemporalRange/moles:DateRangeEnd)}},for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea/moles:dgValidTerm) return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}},  for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure) return element Data_Set_Progress {data($Data_Set_Progress)},for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox) return  element Spatial_Coverage {element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)},element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)},element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)},element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)}},for $Location in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) return element Location {$Location},  for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID) return  element Project {for $DepActAbbrev in distinct-values(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation) return  element Short_Name {data($DepActAbbrev)},for $DepActName in distinct-values(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name) return  element Long_Name {data($DepActName)}},if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then  for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule return  element Access_Constraints {if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then  concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ') else (),if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then concat('See access control policy at ', escape-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL, true())) else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then data($DG/moles:accessControlPolicy/moles:accessControlPolicyText) else  for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition return if (exists($securityCondition/moles:conditionExplanationText)) then concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText)) else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority))} else (),if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder  order by $DataCreatorRole/moles:startDate empty least return  for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson) [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)] return  element Originating_Center {if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then (string($DataCreatorRoleHolder/moles:name)) else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))) else ('empty content')} else (),for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] return  for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)] return  element Data_Center {element Data_Center_Name {element Short_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) else  string($DataCuratorRoleHolder/moles:abbreviation)},element Long_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) else string($DataCuratorRoleHolder/moles:name)}},if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then  element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)} else (),for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID return  element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)},element Personnel {element Role {'Data Center Contact'},if (exists($DataCuratorRoleHolder/name/knownAs)) then  element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)} else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)} else (),element Last_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then  string($DataCuratorRoleHolder/moles:name/moles:familyName) else string($DataCuratorRoleHolder/moles:name)},if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then  element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)} else  if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}) else (),if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then  element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then  element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then  element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then  element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then  element Contact_Address {for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline return element address {data($addressline)},if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then  element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then  element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then  element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)} else ()} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then  element Contact_Address {for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline return element address {data($addressline)},if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then  element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)} else (),if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then  element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)} else (),if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then  element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)} else ()} else ()}},element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)},element Related_URL {element URL_Content_Type {'NDG_B_SERVICE'},element URL {data($DE/moles:dgMetadataID/moles:repositoryIdentifier)},element Description {'The NDG service for browsing metadata.'}},for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule return if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then  (element Related_URL {element URL_Content_Type {'NDG_A_SERVICE'},if (exists($DG/instance/URI)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())} else ($DG/moles:dataModelID/moles:repositoryIdentifier),element Description {'The NDG service delivering data via NDG A metadata.'}},element Related_URL {element URL_Content_Type {'GET DATA > CSML'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())} else (),element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'}}) else if ($DG/moles:dataModelID/moles:schemeIdentifier='CDML-0') then  (element Related_URL {  element URL_Content_Type {'NDG_A_SERVICE'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} else (),element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}},element Related_URL {element URL_Content_Type {'GET DATA > DX'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} else (),element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}}) else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then  element Related_URL {element URL {data($DG/moles:instance/moles:URI)},if (exists($DG/moles:instance/moles:instanceComment)) then  element Description {data($DG/moles:instance/moles:instanceComment)}  else  element Description {'URL to aid in delivering data. Note that this may point directly to the data or, more likely, point to the web site of the curator.'}} else (),for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)  return element Related_URL {element URL {data($RelURL_Desc)},element Description {concat(data($RelURL_Desc/moles:name), ' - ', data($RelURL_Desc/moles:notes))} },element Metadata_Name {'[CEOS IDN DIF]'},element Metadata_Version {'9.4'},if (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then  element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)} else (),for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate return  element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))},if (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then  element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)} else ()}"; 
    5151        static String ISO19139Query = "declare default element namespace 'http://www.isotc211.org/2005/gmd'; declare namespace moles='http://ndg.nerc.ac.uk/moles'; declare namespace gco='http://www.isotc211.org/2005/gco'; declare namespace gmd='http://www.isotc211.org/2005/gmd'; declare namespace gml='http://www.opengis.net/gml'; declare namespace xlink='http://www.w3.org/1999/xlink'; declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'; declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ exists(moles:dgDataEntity) and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier='RepositoryID' and moles:dgMetadataID/moles:localIdentifier='LocalID'] return element MD_Metadata {attribute xsi:schemaLocation {'http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/metadataEntity.xsd'}, element fileIdentifier {element gco:CharacterString {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':ISO19115:', $DE/moles:dgMetadataID/moles:localIdentifier)}}, element language {element gmd:LanguageCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, attribute codeListValue {'eng'}, 'English'}}, element hierarchyLevel {element MD_ScopeCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode'}, attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode_dataset'}, 'dataset'}}, for $parent in $DE/moles:dgRelatedDataEntity[moles:RelationID/moles:dgValidTerm='is-part-of'] return element parentIdentifier {element gco:CharacterString {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':', $DE/moles:dgMetadataID/moles:localIdentifier, ':', $DE/moles:dgMetadataID/moles:localIdentifier)}}, for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] return for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/(moles:dgPerson | moles:dgOrganisation)[ moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/(moles:dgPersonID | moles:dgOrganisationID)/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/(moles:dgPersonID | moles:dgOrganisationID)/moles:localIdentifier] return element contact {element CI_ResponsibleParty {if (string(local-name($DataCuratorRoleHolder))='dgOrganisation') then element organisationName {element gco:CharacterString {string($DataCuratorRoleHolder/moles:name)}}else if (string(local-name($DataCuratorRoleHolder))='dgPerson') then element individualName {element gco:CharacterString {string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))}}else ('empty content') , element positionName {if (exists($DataCuratorRoleHolder/moles:localName)) then element gco:CharacterString {$DataCuratorRoleHolder/moles:localName}else if (exists($DataCuratorRole/moles:roleName)) then element gco:CharacterString {$DataCuratorRole/moles:roleName}else element gco:CharacterString {'Curator'}}, element contactInfo {element gmd:CI_Contact {if (exists($DataCuratorRole/moles:contactDetails/moles:telephone or $DataCuratorRole/moles:contactDetails/moles:fax or $DataCuratorRoleHolder/moles:contactDetails/moles:telephone or $DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then element phone {element gmd:CI_Telephone {if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then element voice {element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:telephone)}}else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then element voice {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)}}else (), if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then element facsimile {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:fax)}}else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then element facsimile {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:fax)}}else () }} else (), element address {element gmd:CI_Address {if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:addressline)) then for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline return element deliveryPoint {element gco:CharacterString {data($addressline)}}else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline)) then for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline return element deliveryPoint {element gco:CharacterString {data($addressline)}}else (), if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then element city {element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:address/moles:city)}}else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then element city {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)}}else (), if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then element electronicMailAddress {element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:eMail)}}else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then element electronicMailAddress {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}}else () }}}}, element role {element CI_RoleCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode'}, attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode_custodian'}, if (exists($DataCuratorRole/moles:localName)) then data($DataCuratorRole/moles:localName) else if (exists($DataCuratorRoleHolder/moles:localName)) then data($DataCuratorRoleHolder/moles:localName) else 'Curator' }}}}, element dateStamp {element gco:Date {adjust-date-to-timezone(current-date())}}, element metadataStandardName {element gco:CharacterString {'ISO 19115:2003'}}, element metadataStandardVersion {element gco:CharacterString {'2003'}}, element identificationInfo {element gmd:MD_DataIdentification {element citation {element gmd:CI_Citation {element title {element gco:CharacterString {data($DE/moles:name)}}, if (exists($DE/moles:abbreviation) and not(empty($DE/moles:abbreviation))) then element alternateTitle {element gco:CharacterString {data($DE/moles:abbreviation)}}else (), element date {if (exists($DE/(moles:DataProvenance | moles:dgMetadataProvenance)/moles:RecordCreation/moles:CreatedDate)) then element gmd:CI_Date {element date {element gco:Date {adjust-date-to-timezone(data($DE/(moles:DataProvenance | moles:dgMetadataProvenance)/moles:RecordCreation/moles:CreatedDate))}}, element dateType {element CI_DateTypeCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/moles:gmxCodelists.xml#CI_DateTypeCode'}, attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode_creation' }, 'Creation'}}}else attribute gco:nilReason {'unknown'}}}}, element abstract {element gco:CharacterString {data($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)}}, element language {element gmd:LanguageCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, attribute codeListValue {'eng'}, 'English' }}, for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) return element topicCategory {element gmd:MD_TopicCategoryCode {attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'}, attribute codeListValue {string($ISOTopicCategory/moles:dgValidTerm)}, string($ISOTopicCategory/moles:dgValidTerm)}}, if (exists($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage)) then element extent {element gmd:EX_Extent {(: add bounding boxes:) for $geoBBox in $DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox return element geographicElement {element EX_GeographicBoundingBox {element westBoundLongitude {element gco:Decimal {data($geoBBox/moles:LimitWest)}}, element eastBoundLongitude {element gco:Decimal {data($geoBBox/moles:LimitEast)}}, element southBoundLatitude {element gco:Decimal {data($geoBBox/moles:LimitSouth)}}, element northBoundLatitude {element gco:Decimal {data($geoBBox/moles:LimitNorth)}}}}, for $geoArea in $DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea return element geographicElement {element EX_GeographicDescription {element geographicIdentifier {element gmd:RS_Identifier {element gco:CharacterString {element code {data(dgArea/dgValidTerm)}}, element gco:CharacterString {element codeSpace {data(dgArea/dgValidTermID/ParentListID)}}}}}}}}else()}}}"; 
Note: See TracChangeset for help on using the changeset viewer.