Changeset 1547 for TI07-MOLES/trunk/DIF


Ignore:
Timestamp:
03/10/06 11:37:28 (13 years ago)
Author:
ko23
Message:

Corrected and extended DIF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/DIF/XQuery/NDG-DIF.xquery

    r1417 r1547  
    1 for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[exists('dgDataEntity') and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='dataent1'] 
     1for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[exists('dgDataEntity') and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='dataent3'] 
    22return 
    3         <DIF  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'  xmlns='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif' xsi:schemaLocation='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'> 
    4         <Entry_ID>{concat($DE/dgMetadataID/repositoryIdentifier, ':DIF:', $DE/dgMetadataID/localIdentifier)}</Entry_ID> 
    5         <Entry_Title>{string($DE/name)}</Entry_Title> 
    6         {for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder[not(exists(endDate)) or endDate=''] 
     3    <DIF  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'  xmlns='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/' xsi:schemaLocation='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'> 
     4        { 
     5        element Entry_ID {concat($DE/dgMetadataID/repositoryIdentifier, ':DIF:', $DE/dgMetadataID/localIdentifier)}, 
     6        element Entry_Title {string($DE/name)}, 
     7        element Data_Set_Citation 
     8        { 
     9            for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder[not(exists(endDate)) or endDate=''][1] 
    710                return  
    8                         for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
    9                                        and dgMetadataID/repositoryIdentifier=$DataCreatorRole/*/repositoryIdentifier 
    10                                        and dgMetadataID/localIdentifier=$DataCreatorRole/*/localIdentifier)] 
    11                                 return  
    12                                 <Dataset_Citation> 
    13                                         {element Data_Creator {if (exists($DataCreatorRoleHolder/name/initials)) then ( 
    14                                         string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName))) 
    15                                         ) 
    16                                         else ( 
    17                                                         string($DataCreatorRoleHolder/abbreviation) 
    18                                         )} 
    19                                         } 
    20  
    21                                         <Dataset_Title>{string($DE/name)}</Dataset_Title> 
    22  
    23                                 </Dataset_Citation> 
    24         } 
    25         <Personnel/> 
    26         <Discipline/> 
     11                    for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
     12                               and dgMetadataID/repositoryIdentifier=$DataCreatorRole/*/repositoryIdentifier 
     13                               and dgMetadataID/localIdentifier=$DataCreatorRole/*/localIdentifier)] 
     14                        return  
     15                            element Data_Creator  
     16                                { 
     17                                if (exists($DataCreatorRoleHolder/name/initials)) then  
     18                                    (string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName)))) 
     19                                else  
     20                                   (string($DataCreatorRoleHolder/abbreviation)) 
     21                                }, 
     22            element Dataset_Title {string($DE/name)} 
     23        }, 
    2724         
    28         {for $StructuredKeyword in ($DE//(dgStructuredKeyword | dgStdParameterMeasured)[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and ListLevel = 0]) 
     25        element Personnel {''}, 
     26        element Discipline {''}, 
     27         
     28        for $StructuredKeyword in ($DE//(dgStructuredKeyword | dgStdParameterMeasured)[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and ListLevel = 0]) 
    2929                return if (exists($StructuredKeyword/*/dgValidTerm)) then ( 
    30                 <Parameters> 
    31                         {element Category {string($StructuredKeyword/*/dgValidTerm)}} 
    32                         {if (exists($StructuredKeyword//dgValidSubterm)  
     30                    element Parameters 
     31                        { 
     32                        element Category {string($StructuredKeyword/*/dgValidTerm)}, 
     33                        if (exists($StructuredKeyword//dgValidSubterm)  
    3334                                and $StructuredKeyword//dgValidSubterm != ''  
    3435                                and $StructuredKeyword//dgValidSubterm != ' ') then ( 
    3536                        for $Subterm in $StructuredKeyword//dgValidSubterm[exists(dgValidTerm)] 
    36                         where exists($Subterm/dgValidSubterm) 
    37                                 order by $Subterm/ListLevel 
     37                            where exists($Subterm/dgValidSubterm) 
     38                            order by $Subterm/ListLevel 
    3839                                return  
    3940                                        if ($Subterm/ListLevel=1) then (element Topic {string($Subterm/dgValidSubterm/dgValidTerm)})  
     
    4647                                        else (element GCMD_Science_Valid {string($Subterm/dgValidSubterm/dgValidTerm)})))) 
    4748                                )        
    48                         else()} 
    49                 </Parameters> 
     49                        else() 
     50                    } 
    5051                ) 
    51                 else() 
    52         } 
    53         {for $ISOTopicCategory in ($DE/dgStructuredKeyword[dgValidTermID/ParentListID='ISO 19115 Topic Category']) 
    54                 return  
    55                         element ISO_Topic_Category {string($ISOTopicCategory/dgValidTerm)} 
    56         } 
    57         {for $Keyword in distinct-values($DE//dgStructuredKeyword[ 
     52                else(), 
     53        for $ISOTopicCategory in ($DE/dgStructuredKeyword[dgValidTermID/ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
     54            return  
     55                element ISO_Topic_Category {string($ISOTopicCategory/dgValidTerm)}, 
     56 
     57        for $Keyword in distinct-values($DE//dgStructuredKeyword[ 
    5858        dgValidTermID/ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'   
    5959        and  
    60         dgValidTermID/ParentListID!='ISO 19115 Topic Category 
     60        dgValidTermID/ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode 
    6161        ]/dgValidTerm) 
    62         return element Keyword {string($Keyword)}  
    63         } 
     62        return element Keyword {string($Keyword)},  
    6463            
    65         {for $DepDPT in ($DE/dgDataEntity/RelatedDeployment/DataProductionToolID)   
     64        for $DepDPT in ($DE/dgDataEntity/RelatedDeployment/DataProductionToolID)   
    6665        return  
    67             <Sensor_Name> 
    68                 {for $DepDPTAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/abbreviation)) 
    69                     return element Short_Name {data($DepDPTAbbrev)}} 
    70                 {for $DepDPTName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/name)) 
     66            element Sensor_Name 
     67                { 
     68                for $DepDPTAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/abbreviation)) 
     69                    return element Short_Name {data($DepDPTAbbrev)}, 
     70                for $DepDPTName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/name)) 
    7171                    return element Long_Name {data($DepDPTName)} 
    72                 } 
    73             </Sensor_Name> 
    74         } 
    75         {for $DepObsStn in ($DE/dgDataEntity/RelatedDeployment/ObservationStationID) 
     72                }, 
     73 
     74        for $DepObsStn in ($DE/dgDataEntity/RelatedDeployment/ObservationStationID) 
    7675        return  
    77             <Source_Name> 
    78                 {for $DepObsStnAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/abbreviation)) 
    79                     return <Short_Name>{data($DepObsStnAbbrev)}</Short_Name>} 
    80                 {for $DepObsStnName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/name)) 
    81                     return <Long_Name>{data($DepObsStnName)}</Long_Name>} 
    82             </Source_Name> 
    83             } 
    84         {for $TemporalRange in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgDateRange) 
    85                 return <Temporal_Coverage>  
    86                     {element Start_Date {data($TemporalRange/DateRangeStart)}} 
    87                     {element End_Date {data($TemporalRange/DateRangeEnd)}} 
    88                  </Temporal_Coverage> 
    89                 } 
    90         {for $TemporalTerm in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea/dgValidTerm) 
    91                 return element Paleo_Temporal_Coverage { 
    92                 element Chronostratigraphic_Unit {data($TemporalTerm)} 
    93                     }  
    94                 } 
    95         {for $Data_Set_Progress in ($DE/dgDataEntity/dgDataSummary/dgDataStatus/dgDatasetClosure) 
    96                 return element Data_Set_Progress {$Data_Set_Progress} 
    97                     }  
    98         {for $BoundingBox in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/BoundingBox) 
    99         return <Spatial_Coverage>  
    100             {element Southernmost_Latitude {data($BoundingBox/LimitSouth)}} 
    101             {element Northernmost_Latitude {data($BoundingBox/LimitNorth)}} 
    102             {element Westernmost_Longitude {data($BoundingBox/LimitWest)}} 
    103             {element Easternmost_Longitude {data($BoundingBox/LimitEast)}} 
    104             </Spatial_Coverage> 
    105         } 
    106         {for $Location in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) 
    107                 return element Location {$Location}  
    108                 } 
    109         <Data_Resolution/> 
    110         {for $DepAct in ($DE/dgDataEntity/RelatedDeployment/ActivityID) 
     76            element Source_Name 
     77                { 
     78                for $DepObsStnAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/abbreviation)) 
     79                    return element Short_Name {data($DepObsStnAbbrev)}, 
     80                for $DepObsStnName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/name)) 
     81                    return element Long_Name {data($DepObsStnName)} 
     82                }, 
     83 
     84        for $TemporalRange in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgDateRange) 
     85                return  
     86                    element Temporal_Coverage 
     87                        { 
     88                        element Start_Date {data($TemporalRange/DateRangeStart)}, 
     89                        element End_Date {data($TemporalRange/DateRangeEnd)} 
     90                        }, 
     91        for $TemporalTerm in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea/dgValidTerm) 
     92                return element Paleo_Temporal_Coverage  
     93                    { 
     94                        element Chronostratigraphic_Unit {data($TemporalTerm)} 
     95                    },  
     96 
     97        for $Data_Set_Progress in ($DE/dgDataEntity/dgDataSummary/dgDataStatus/dgDatasetClosure) 
     98                return element Data_Set_Progress {$Data_Set_Progress}, 
     99 
     100        for $BoundingBox in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/BoundingBox) 
    111101        return  
    112             <Project> 
    113                 {for $DepActAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/abbreviation)) 
    114                     return <Short_Name>{data($DepActAbbrev)}</Short_Name>} 
    115                 {for $DepActName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/name)) 
    116                     return <Long_Name>{data($DepActName)}</Long_Name>} 
    117             </Project> 
    118             } 
    119         <Quality/> 
    120         {if (exists($DE/dgDataEntity/dgDataGranule/accessControlPolicy)) then ( 
    121             element Access_Constraints {''} 
     102            element Spatial_Coverage 
     103                { 
     104                    element Southernmost_Latitude {data($BoundingBox/LimitSouth)}, 
     105                    element Northernmost_Latitude {data($BoundingBox/LimitNorth)}, 
     106                    element Westernmost_Longitude {data($BoundingBox/LimitWest)}, 
     107                    element Easternmost_Longitude {data($BoundingBox/LimitEast)} 
     108                }, 
     109 
     110        for $Location in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) 
     111                return element Location {$Location},  
     112        element Data_Resolution {''}, 
     113        for $DepAct in ($DE/dgDataEntity/RelatedDeployment/ActivityID) 
     114        return  
     115            element Project 
     116                { 
     117                for $DepActAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/abbreviation)) 
     118                    return  
     119                        element Short_Name {data($DepActAbbrev)}, 
     120                for $DepActName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/name)) 
     121                    return  
     122                        element Long_Name {data($DepActName)} 
     123                }, 
     124 
     125        element Quality {''}, 
     126 
     127        if (exists($DE/dgDataEntity/dgDataGranule/accessControlPolicy)) then ( 
     128                for $DG in $DE/dgDataEntity/dgDataGranule 
     129                    return  
     130                                element Access_Constraints  
     131                            { 
     132                                if (exists($DG/dgGranuleSummary/dgGranuleName)) then  
     133                                    concat('For data granule ', $DG/dgGranuleSummary/dgGranuleName, ': ') 
     134                                else (), 
     135                                if (exists($DG/accessControlPolicy/accessControlPolicyURL)) then 
     136                                    concat('See access control policy at ', escape-uri($DG/accessControlPolicy/accessControlPolicyURL, true())) 
     137                                else if (exists($DG/accessControlPolicy/accessControlPolicyText)) then 
     138                                    ( 
     139                                    data($DG/accessControlPolicy/accessControlPolicyText) 
     140                                    ) 
     141                                 else ( 
     142                                     for $securityCondition in $DG/accessControlPolicy/dgSecurityCondition 
     143                                     return 
     144                                         if (exists($securityCondition/conditionExplanationText)) then 
     145                                             concat('Effect: ', data($securityCondition/effect), ' - ', data($securityCondition/conditionExplanationText)) 
     146                                         else ( 
     147                                             concat('Effect: ', data($securityCondition/effect), 'needs ', data($securityCondition/attauthRole), ' from ', data($securityCondition/dgAttributeAuthority)) 
     148                                         ) 
     149                                     ) 
     150                            } 
    122151            ) 
    123                 else () 
    124             } 
    125         <Use_Constraints/> 
    126         <Data_Set_Language/> 
    127         <Originating_Center/> 
    128  
    129         {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] 
    130                 return  
    131                         for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
    132                                        and dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier 
    133                                        and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)] 
    134                                 return  
    135                                 <Data_Center> 
    136                                         <Data_Center_Name> 
    137                                         {element Short_Name {if (exists($DataCuratorRoleHolder/name/initials)) then ( 
    138                                         string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName))) 
    139                                         ) 
    140                                         else ( 
    141                                                         string($DataCuratorRoleHolder/abbreviation) 
    142                                         )} 
    143                                         } 
    144                                         {element Long_Name {if (exists($DataCuratorRoleHolder/name/initials)) then ( 
    145                                         string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName))) 
    146                                         ) 
    147                                         else (string($DataCuratorRoleHolder/name))} 
    148                                         } 
    149                                         </Data_Center_Name> 
    150                                         {if (exists($DataCuratorRoleHolder/contactDetails/URI)) then ( 
    151                                         element Data_Center_URL {data($DataCuratorRoleHolder/contactDetails/URI)} 
    152                                         ) 
    153                                         else ()} 
    154                                         {for $DGID in $DE/dgDataEntity/dgDataGranule/dataModelID 
    155                                         return element Data_Set_ID {concat($DGID/repositoryIdentifier, ':', $DGID/schemeIdentifier, ':', $DGID/localIdentifier)} 
    156                                         } 
    157                                         <Personnel> 
    158                                         {element Role {'Data Center Contact'}} 
    159                                         {if (exists($DataCuratorRoleHolder/name/knownAs)) then ( 
    160                                         element First_Name {string($DataCuratorRoleHolder/name/knownAs)} 
    161                                         ) 
    162                                         else if (exists($DataCuratorRoleHolder/name/initials)) then ( 
    163                                         element First_Name {string($DataCuratorRoleHolder/name/initials)} 
    164                                         ) 
    165                                         else ()}                                         
    166                                         {element Last_Name {if (exists($DataCuratorRoleHolder/name/familyName)) then ( 
    167                                         string($DataCuratorRoleHolder/name/familyName) 
    168                                         ) 
    169                                         else (string($DataCuratorRoleHolder/name))} 
    170                                         } 
    171                                         {if (exists($DataCuratorRole/contactDetails/eMail)) then ( 
    172                                         element Email {string($DataCuratorRole/contactDetails/eMail)} 
    173                                         ) 
    174                                         else ( 
    175                                         if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then ( 
    176                                         element Email {string($DataCuratorRoleHolder/contactDetails/eMail)} 
    177                                         ) 
    178                                         else () 
    179                                         )} 
    180                                         {if (exists($DataCuratorRole/contactDetails/telephone)) then ( 
    181                                         element Phone {string($DataCuratorRole/contactDetails/telephone)} 
    182                                         ) 
    183                                         else ( 
    184                                         if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then ( 
    185                                         element Phone {string($DataCuratorRoleHolder/contactDetails/telephone)} 
    186                                         ) 
    187                                         else () 
    188                                         )} 
    189                                         {if (exists($DataCuratorRole/contactDetails/fax)) then ( 
    190                                         element Fax {string($DataCuratorRole/contactDetails/fax)} 
    191                                         ) 
    192                                         else ( 
    193                                         if (exists($DataCuratorRoleHolder/contactDetails/fax)) then ( 
    194                                         element Fax {string($DataCuratorRoleHolder/contactDetails/fax)} 
    195                                         ) 
    196                                         else () 
    197                                         )} 
    198                                         {if (exists($DataCuratorRole/contactDetails/address/addressline)) then ( 
    199                                         for $addressline in $DataCuratorRole/contactDetails/address/addressline 
    200                                         return element address {$addressline} 
    201                                         ) 
    202                                         else ( 
    203                                         if (exists($DataCuratorRoleHolder/contactDetails/addressline)) then ( 
    204                                         for $addressline in $DataCuratorRoleHolder/contactDetails/address/addressline 
    205                                         return element address {$addressline} 
    206                                         ) 
    207                                         else () 
    208                                         )} 
    209                                         {if (exists($DataCuratorRole/contactDetails/address/city)) then ( 
    210                                         element City {string($DataCuratorRole/contactDetails/city)} 
    211                                         ) 
    212                                         else ( 
    213                                         if (exists($DataCuratorRoleHolder/contactDetails/city)) then ( 
    214                                         element Cityl {string($DataCuratorRoleHolder/contactDetails/city)} 
    215                                         ) 
    216                                         else () 
    217                                         )} 
    218                                         {if (exists($DataCuratorRole/contactDetails/address/postcode)) then ( 
    219                                         element Postal_Code {string($DataCuratorRole/contactDetails/postcode)} 
    220                                         ) 
    221                                         else ( 
    222                                         if (exists($DataCuratorRoleHolder/contactDetails/postcode)) then ( 
    223                                         element email {string($DataCuratorRoleHolder/contactDetails/postcode)} 
    224                                         ) 
    225                                         else () 
    226                                         )} 
    227                                         {if (exists($DataCuratorRole/contactDetails/address/country)) then ( 
    228                                         element Postal_Code {string($DataCuratorRole/contactDetails/country)} 
    229                                         ) 
    230                                         else ( 
    231                                         if (exists($DataCuratorRoleHolder/contactDetails/postcode)) then ( 
    232                                         element Postal_Code {string($DataCuratorRoleHolder/contactDetails/eMail)} 
    233                                         ) 
    234                                         else () 
    235                                                                          )} 
    236                                         </Personnel>  
    237                                 </Data_Center> 
    238         } 
    239  
    240         <Distribution/> 
    241         <Multimedia_Sample/> 
    242         <Reference/> 
    243  
    244         <Summary>{string($DE/dgMetadataDescription/abstract/abstractText)}</Summary> 
    245  
    246         <Related_URL> 
    247             {element URL_Content_Type {'NDG_B_SERVICE'}} 
    248             {element URL {data($DE/dgMetadataID/repositoryIdentifier)}} 
    249             {element Description {'The NDG service for browsing metadata.'}} 
    250         </Related_URL> 
    251  
    252         {for $DG in $DE/dgDataEntity/dgDataGranule 
     152                else (), 
     153 
     154        element Use_Constraints {''}, 
     155        element Data_Set_Language {''}, 
     156        element Originating_Center {''}, 
     157 
     158        for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] 
    253159            return  
    254             if ($DG/dataModelID/schemeIdentifier='NDG-A0') then ( 
    255             <Related_URL> 
    256             {element URL_Content_Type {'NDG_A_SERVICE'}} 
    257             {element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}} 
    258             {element Description {'The NDG service delivering data via NDG A metadata.'}} 
    259             </Related_URL> 
    260             ) 
    261             else if ($DG/dataModelID/schemeIdentifier='CDML-0') then ( 
    262             <Related_URL> 
    263             {element URL_Content_Type {'NDG_A_SERVICE'}} 
    264             {element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}} 
    265             {element Description {'The NDG service delivering data via NDG A metadata.'}} 
    266             </Related_URL> 
     160                for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
     161                   and dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier 
     162                   and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)] 
     163                    return  
     164                        element Data_Center 
     165                            { 
     166                        element Data_Center_Name 
     167                            { 
     168                                element Short_Name  
     169                                    { 
     170                                    if (exists($DataCuratorRoleHolder/name/initials)) then ( 
     171                                    string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName))) 
     172                                ) 
     173                            else  
     174                                (string($DataCuratorRoleHolder/abbreviation)) 
     175                            }, 
     176                        element Long_Name  
     177                            { 
     178                                if (exists($DataCuratorRoleHolder/name/initials)) then  
     179                                    (string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))) 
     180                                else (string($DataCuratorRoleHolder/name)) 
     181                            } 
     182                        }, 
     183                        if (exists($DataCuratorRoleHolder/contactDetails/URI)) then  
     184                            ( 
     185                                element Data_Center_URL  
     186                                    {data($DataCuratorRoleHolder/contactDetails/URI)} 
     187                            ) 
     188                        else (), 
     189                        for $DGID in $DE/dgDataEntity/dgDataGranule/dataModelID 
     190                        return  
     191                            element Data_Set_ID  
     192                                { 
     193                                    concat($DGID/repositoryIdentifier, ':', $DGID/schemeIdentifier, ':', $DGID/localIdentifier) 
     194                                }, 
     195                        element  Personnel 
     196                            { 
     197                                element Role {'Data Center Contact'}, 
     198                                if (exists($DataCuratorRoleHolder/name/knownAs)) then  
     199                                    (element First_Name {string($DataCuratorRoleHolder/name/knownAs)}) 
     200                                else if (exists($DataCuratorRoleHolder/name/initials)) then  
     201                                    (element First_Name {string($DataCuratorRoleHolder/name/initials)}) 
     202                                 else (),                                        
     203                                 element Last_Name  
     204                                      { 
     205                                          if (exists($DataCuratorRoleHolder/name/familyName)) then  
     206                                              (string($DataCuratorRoleHolder/name/familyName)) 
     207                                    else (string($DataCuratorRoleHolder/name)) 
     208                                    }, 
     209                                if (exists($DataCuratorRole/contactDetails/eMail)) then  
     210                                    (element Email {string($DataCuratorRole/contactDetails/eMail)}) 
     211                                else  
     212                                    (if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  
     213                                            (element Email {string($DataCuratorRoleHolder/contactDetails/eMail)}) 
     214                                        else () 
     215                                    ), 
     216 
     217                                if (exists($DataCuratorRole/contactDetails/telephone)) then  
     218                                    (element Phone {string($DataCuratorRole/contactDetails/telephone)}) 
     219                                else  
     220                                    (if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then  
     221                                            (element Phone {string($DataCuratorRoleHolder/contactDetails/telephone)}) 
     222                                        else () 
     223                                            ), 
     224                                if (exists($DataCuratorRole/contactDetails/fax)) then  
     225                                    (element Fax {string($DataCuratorRole/contactDetails/fax)}) 
     226                                else  
     227                                    (if (exists($DataCuratorRoleHolder/contactDetails/fax)) then  
     228                                            (element Fax {string($DataCuratorRoleHolder/contactDetails/fax)}) 
     229                                        else () 
     230                                    ), 
     231                                if (exists($DataCuratorRole/contactDetails/address)) then  
     232                                    (element Contact_Address { 
     233                                        for $addressline in $DataCuratorRole/contactDetails/address/addressline 
     234                                            return element address {$addressline}, 
     235                                                        if (exists($DataCuratorRole/contactDetails/address/city)) then  
     236                                        (element City {string($DataCuratorRole/contactDetails/address/city)}) 
     237                                    else (), 
     238                                    if (exists($DataCuratorRole/contactDetails/address/postcode)) then  
     239                                        (element Postal_Code {string($DataCuratorRole/contactDetails/address/postcode)}) 
     240                                    else (), 
     241                                     if (exists($DataCuratorRole/contactDetails/address/country)) then  
     242                                         (element Country {string($DataCuratorRole/contactDetails/address/country)}) 
     243                                     else () 
     244                                     } 
     245                                    ) 
     246                                else if (exists($DataCuratorRoleHolder/contactDetails/address)) then  
     247                                    (element Contact_Address  
     248                                    { 
     249                                        for $addressline in $DataCuratorRole/contactDetails/address/addressline 
     250                                            return element address {$addressline}, 
     251                                                            if (exists($DataCuratorRole/contactDetails/address/city)) then  
     252                                            (element City {string($DataCuratorRoleHolder/contactDetails/address/city)}) 
     253                                        else (), 
     254                                        if (exists($DataCuratorRoleHolder/contactDetails/address/postcode)) then  
     255                                            (element Postal_Code {string($DataCuratorRole/contactDetails/postcode)}) 
     256                                        else (), 
     257                                         if (exists($DataCuratorRoleHolder/contactDetails/address/country)) then  
     258                                             (element Country {string($DataCuratorRoleHolder/contactDetails/address/country)}) 
     259                                         else () 
     260                                     } 
     261                                    ) 
     262                                else () 
     263                                 } 
     264                        }, 
     265        element Distribution {''}, 
     266        element Multimedia_Sample {''}, 
     267        element Reference {''}, 
     268 
     269        element Summary {string($DE/dgMetadataDescription/abstract/abstractText)}, 
     270 
     271        element Related_URL  
     272            { 
     273            element URL_Content_Type {'NDG_B_SERVICE'}, 
     274            element URL {data($DE/dgMetadataID/repositoryIdentifier)}, 
     275            element Description {'The NDG service for browsing metadata.'} 
     276            }, 
     277 
     278        for $DG in $DE/dgDataEntity/dgDataGranule 
     279            return  
     280                if ($DG/dataModelID/schemeIdentifier='NDG-A0') then  
     281                    ( 
     282                    element Related_URL  
     283                        { 
     284                            element URL_Content_Type {'NDG_A_SERVICE'}, 
     285                            element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}, 
     286                            element Description {'The NDG service delivering data via NDG A metadata.'} 
     287                        }, 
     288                   element Related_URL  
     289                        { 
     290                            element URL_Content_Type {'GET DATA > CSML'}, 
     291                            element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}, 
     292                            element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'} 
     293                        } 
     294                    ) 
     295                else if ($DG/dataModelID/schemeIdentifier='CDML-0') then  
     296                    ( 
     297                        element Related_URL  
     298                            { 
     299                                   element URL_Content_Type {'NDG_A_SERVICE'}, 
     300                            element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}, 
     301                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'} 
     302                            }, 
     303                        element Related_URL  
     304                            { 
     305                            element URL_Content_Type {'GET DATA > DX'}, 
     306                            element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}, 
     307                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'} 
     308                            } 
     309                    ) 
     310                else if ($DG/dataModelID/schemeIdentifier='URI') then  
     311                    ( 
     312                    element Related_URL 
     313                        { 
     314                            element URL {data($DG/instance/URI)}, 
     315                            if (exists($DG/instance/instanceComment)) then  
     316                                ( 
     317                                    element Description {data($DG/instance/instanceComment)}         
     318                                ) 
     319                            else  
     320                                ( 
     321                                    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 curators.'} 
     322                                ) 
     323                            } 
     324                    ) 
     325            else (), 
     326            for $RelURL_Desc in ($DE/dgMetadataDescription/descriptionSection/descriptionOnlineReference)  
     327            return 
     328                    element Related_URL 
     329                        { 
     330                            element URL {data($RelURL_Desc)}, 
     331                            element Description {concat(data($RelURL_Desc/name), ' - ', data($RelURL_Desc/notes))}           
     332                         }, 
     333             
     334 
     335        element Parent_DIF {''}, 
     336        element IDN_Node {''}, 
     337        element Originating_Metadata_Node {''},  
     338        element Metadata_Name {'[CEOS IDN DIF]'}, 
     339        element Metadata_Version {'9.4'}, 
     340 
     341        if  (exists($DE/dgMetadataProvenance/RecordCreation)) then  
     342            ( 
     343                element DIF_Creation_Date {data($DE/dgMetadataProvenance/RecordCreation/CreatedDate)} 
    267344            ) 
    268             else if ($DG/dataModelID/schemeIdentifier='URI') then ( 
    269             <Related_URL> 
    270             {element URL {data($DG/instance/URI)}} 
    271             {if (exists($DG/instance/instanceComment)) then ( 
    272             element Description {data($DG/instance/instanceComment)}         
    273             ) 
    274             else ( 
    275             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 curators.'} 
    276             ) 
    277             } 
    278             </Related_URL> 
     345        else (), 
     346 
     347        for $MDUpdt in $DE/dgMetadataProvenance/RecordUpdate 
     348        return   
     349            element DIF_Revision_History {concat(data($MDUpdt/UpdateDate), ' - ', data($MDUpdt/UpdateSummary), ' - ', data($MDUpdt/UpdatedBy))} 
     350                , 
     351        if  (exists($DE/dgMetadataProvenance/RecordReview)) then  
     352            ( 
     353                element Future_DIF_Review_Date {data($DE/dgMetadataProvenance/RecordReview/ReviewDate)} 
    279354            ) 
    280             else () 
    281         } 
    282         <Parent_DIF/> 
    283         <IDN_Node/> 
    284         <Originating_Metadata_Node/>     
    285         <Metadata_Name>[CEOS IDN DIF]</Metadata_Name> 
    286         {element Metadata_Version {'9.4'}} 
    287  
    288         {if  (exists($DE/dgMetadataProvenance/RecordCreation)) then ( 
    289         element DIF_Creation_Date {data($DE/dgMetadataProvenance/RecordCreation/CreatedDate)} 
    290         ) 
    291355        else () 
    292         } 
    293         {for $MDUpdt in $DE/dgMetadataProvenance/RecordUpdate 
    294         return  element DIF_Revision_History {concat(data($MDUpdt/UpdateDate), ' - ', data($MDUpdt/UpdateSummary), ' - ', data($MDUpdt/UpdatedBy))} 
    295         } 
    296         {if  (exists($DE/dgMetadataProvenance/RecordReview)) then ( 
    297         element Future_DIF_Review_Date {data($DE/dgMetadataProvenance/RecordReview/ReviewDate)} 
    298         ) 
    299         else () 
    300         } 
    301         </DIF> 
     356        } 
     357    </DIF> 
Note: See TracChangeset for help on using the changeset viewer.