Changeset 4436 for exist/trunk


Ignore:
Timestamp:
18/11/08 09:37:50 (11 years ago)
Author:
cbyrom
Message:

Remove unneccesary xquery libs from xqueries + fix moles2dif - removing
hidden characters which stopped it from running.

Location:
exist/trunk/xquery
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • exist/trunk/xquery/atom2DC.xq

    r4424 r4436  
    11(: Create a dublin core document from Atom documents in TargetCollection which have LocalID :) 
    2 import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    3 import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery'; 
    4  
    52declare default element namespace 'http://www.w3.org/2005/Atom'; 
    63declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  
  • exist/trunk/xquery/atom2DIF.xq

    r4435 r4436  
    88declare namespace gml = "http://www.opengis.net/gml"; 
    99declare namespace fn = "http://www.w3.org/2005/02/xpath-functions"; 
    10  
    11 import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    12 import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery'; 
    1310 
    1411(: Keep this in official lib version 
  • exist/trunk/xquery/moles2dif.xq

    r4410 r4436  
    1 declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 
    2 declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  
     1declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 
     2declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'; 
    33declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
    44declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
    55 
    6 import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'vocab_xquery_lib.xquery'; 
    7 import module namespace inputParse='http://ndg.nerc.ac.uk/xquery/lib/inputParse' at 'inputParse_xquery_lib.xquery'; 
    8  
    9  
    10 (:  
     6(: 
    117Updated descriptionSection to use from URI to URL in moles doc.. can now return links.. 
    128also RELATED_URLs & data centre names all work with badc dif2moles2dif pipeline, also started to take encode-uri as not using eXist so just cacks up the URI's 
     
    2723 
    2824for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[ 
    29         exists('moles:dgDataEntity')  
    30         and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    31         and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier  
    32         and moles:dgMetadataID/moles:localIdentifier=$localIdentifier] 
     25        exists('moles:dgDataEntity') 
     26        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     27        and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier 
     28        and moles:dgMetadataID/moles:localIdentifier=$localIdentifier] 
    3329return 
    3430element DIF { 
    35         attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'}, 
    36         element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)}, 
    37         element Entry_Title {string($DE/moles:name)}, 
    38         element Data_Set_Citation { 
    39             for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1] 
    40                 return 
    41                     for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
    42                                and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier 
    43                                and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)] 
    44                         return  
    45                             element Dataset_Creator { 
    46                                 if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then  
    47                                     string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))) 
    48                                 else  
    49                                    string($DataCreatorRoleHolder/moles:abbreviation) 
    50                                 }, 
    51             element Dataset_Title {string($DE/moles:name)} 
    52         }, 
    53         element Personnel  
    54         {element Role {''}, 
    55         element Last_Name {''} 
    56         }, 
    57         element Discipline { element Discipline_Name {''} }, 
    58         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]) 
    59                 return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then  
    60                     element Parameters { 
    61                         element Category {string($StructuredKeyword/*/moles:dgValidTerm)}, 
    62                         if (exists($StructuredKeyword//moles:dgValidSubterm)  
    63                                 and $StructuredKeyword//moles:dgValidSubterm != ''  
    64                                 and $StructuredKeyword//moles:dgValidSubterm != ' ') then  
    65                         for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)] 
    66                             where exists($Subterm/moles:dgValidSubterm) 
    67                             order by $Subterm/moles:ListLevel 
    68                                 return  
    69                                         if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
    70                                         else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
    71                                         else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
    72                                         else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
    73                                         else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
    74                         else () 
    75                     } 
    76                 else (), 
    77         (: Parameters - this is fail safe :) 
    78         element Parameters { element Category {''}, element Topic {''}, element Term {''} }, 
    79  
    80         (: ISOTopic subcategory :) 
    81         for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[moles:dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
    82             return  
    83                 element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)}, 
    84  
    85         (: ok from here :) 
    86         for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[ 
    87         moles:dgValidTermID/moles:ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'   
    88         and  
    89         moles:dgValidTermID/moles:ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'   
    90         ]/moles:dgValidTerm) 
    91          
    92         return element Keyword {string($Keyword)},  
    93         for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID)   
    94         return  
    95             element Sensor_Name { 
    96                (: for $DepDPTAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)):) 
    97                 for $DepDPTAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) 
    98                     return element Short_Name {data($DepDPTAbbrev)}, 
    99                 (:for $DepDPTName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)):) 
    100                 for $DepDPTName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) 
    101                     return element Long_Name {data($DepDPTName)} 
    102                 }, 
    103         for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID) 
    104         return  
    105             element Source_Name { 
    106                 (:for $DepObsStnAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)):) 
    107                 for $DepObsStnAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) 
    108                     return element Short_Name {data($DepObsStnAbbrev)}, 
    109                 (:for $DepObsStnName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)):) 
    110                 for $DepObsStnName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) 
    111                     return element Long_Name {data($DepObsStnName)} 
    112                 }, 
     31        attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'}, 
     32        element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)}, 
     33        element Entry_Title {string($DE/moles:name)}, 
     34        element Data_Set_Citation { 
     35            for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1] 
     36                return 
     37                    for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     38                               and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier 
     39                               and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)] 
     40                        return 
     41                            element Dataset_Creator { 
     42                                if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then 
     43                                    string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))) 
     44                                else 
     45                                   string($DataCreatorRoleHolder/moles:abbreviation) 
     46                                }, 
     47            element Dataset_Title {string($DE/moles:name)} 
     48        }, 
     49        element Personnel 
     50        {element Role {''}, 
     51        element Last_Name {''} 
     52        }, 
     53        element Discipline { element Discipline_Name {''} }, 
     54        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]) 
     55                return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then 
     56                    element Parameters { 
     57                        element Category {string($StructuredKeyword/*/moles:dgValidTerm)}, 
     58                        if (exists($StructuredKeyword//moles:dgValidSubterm) 
     59                                and $StructuredKeyword//moles:dgValidSubterm != '' 
     60                                and $StructuredKeyword//moles:dgValidSubterm != ' ') then 
     61                        for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)] 
     62                            where exists($Subterm/moles:dgValidSubterm) 
     63                            order by $Subterm/moles:ListLevel 
     64                                return 
     65                                        if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
     66                                        else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
     67                                        else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
     68                                        else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
     69                                        else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
     70                        else () 
     71                    } 
     72                else (), 
     73        (: Parameters - this is fail safe :) 
     74        element Parameters { element Category {''}, element Topic {''}, element Term {''} }, 
     75 
     76        (: ISOTopic subcategory :) 
     77        for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[moles:dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
     78            return 
     79                element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)}, 
     80 
     81        (: ok from here :) 
     82        for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[ 
     83        moles:dgValidTermID/moles:ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' 
     84        and 
     85        moles:dgValidTermID/moles:ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode' 
     86        ]/moles:dgValidTerm) 
     87 
     88        return element Keyword {string($Keyword)}, 
     89        for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID) 
     90        return 
     91            element Sensor_Name { 
     92               (: for $DepDPTAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)):) 
     93                for $DepDPTAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) 
     94                    return element Short_Name {data($DepDPTAbbrev)}, 
     95                (:for $DepDPTName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)):) 
     96                for $DepDPTName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) 
     97                    return element Long_Name {data($DepDPTName)} 
     98                }, 
     99        for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID) 
     100        return 
     101            element Source_Name { 
     102                (:for $DepObsStnAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)):) 
     103                for $DepObsStnAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) 
     104                    return element Short_Name {data($DepObsStnAbbrev)}, 
     105                (:for $DepObsStnName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)):) 
     106                for $DepObsStnName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) 
     107                    return element Long_Name {data($DepObsStnName)} 
     108                }, 
    113109    for $TemporalRange in $DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage/(moles:dgTemporalCoverage | moles:dgSpatioTemporalCoverage/moles:dgSpatioTemporalRange/moles:dgTemporalCoverage)/moles:DateRange 
    114         return 
    115             element Temporal_Coverage 
    116                         { 
    117                         element Start_Date {data($TemporalRange/moles:DateRangeStart)}, 
    118                         element Stop_Date {data($TemporalRange/moles:DateRangeEnd)} 
    119                         }, 
    120         for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea/moles:dgValidTerm) 
    121                 return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}},  
    122         for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure) 
    123                 return element Data_Set_Progress {data($Data_Set_Progress)}, 
    124         for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox) 
    125         return  
    126             element Spatial_Coverage { 
    127                     element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)}, 
    128                     element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)}, 
    129                     element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)}, 
    130                     element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)} 
    131                 }, 
    132         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']) 
    133                 return element Location {$Location},  
    134         element Data_Resolution {''}, 
    135         for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID) 
    136         return  
    137             element Project { 
    138                 for $DepActAbbrev in distinct-values(collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation) 
    139                     return  
    140                         element Short_Name {data($DepActAbbrev)}, 
    141                 for $DepActName in distinct-values(collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name) 
    142                     return  
    143                         element Long_Name {data($DepActName)} 
    144                 }, 
    145         element Quality {''}, 
    146         if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then  
    147                 for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
    148                     return  
    149                                 element Access_Constraints { 
    150                                 if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then  
    151                                     concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ') 
    152                                 else (), 
    153                                 if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then 
    154                                     concat('See access control policy at ', encode-for-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) 
    155                                 else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then 
    156                                     data($DG/moles:accessControlPolicy/moles:accessControlPolicyText) 
    157                                  else  
    158                                      for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition 
    159                                      return 
    160                                          if (exists($securityCondition/moles:conditionExplanationText)) then 
    161                                              concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText)) 
    162                                          else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority)) 
    163                             } 
     110        return 
     111            element Temporal_Coverage 
     112                        { 
     113                        element Start_Date {data($TemporalRange/moles:DateRangeStart)}, 
     114                        element Stop_Date {data($TemporalRange/moles:DateRangeEnd)} 
     115                        }, 
     116        for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea/moles:dgValidTerm) 
     117                return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}}, 
     118        for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure) 
     119                return element Data_Set_Progress {data($Data_Set_Progress)}, 
     120        for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox) 
     121        return 
     122            element Spatial_Coverage { 
     123                    element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)}, 
     124                    element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)}, 
     125                    element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)}, 
     126                    element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)} 
     127                }, 
     128        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']) 
     129                return element Location {$Location}, 
     130        element Data_Resolution {''}, 
     131        for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID) 
     132        return 
     133            element Project { 
     134                for $DepActAbbrev in distinct-values(collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation) 
     135                    return 
     136                        element Short_Name {data($DepActAbbrev)}, 
     137                for $DepActName in distinct-values(collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name) 
     138                    return 
     139                        element Long_Name {data($DepActName)} 
     140                }, 
     141        element Quality {''}, 
     142        if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then 
     143                for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
     144                    return 
     145                                element Access_Constraints { 
     146                                if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then 
     147                                    concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ') 
     148                                else (), 
     149                                if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then 
     150                                    concat('See access control policy at ', encode-for-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) 
     151                                else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then 
     152                                    data($DG/moles:accessControlPolicy/moles:accessControlPolicyText) 
     153                                 else 
     154                                     for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition 
     155                                     return 
     156                                         if (exists($securityCondition/moles:conditionExplanationText)) then 
     157                                             concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText)) 
     158                                         else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority)) 
     159                            } 
    164160                else (), 
    165         element Use_Constraints {''}, 
    166         element Data_Set_Language {''}, 
    167         if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then 
    168                 for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder  
    169                     order by $DataCreatorRole/moles:startDate empty least 
    170                             return  
    171                               (:##for $DataCreatorRoleHolder in $targetCollection/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson):) 
    172                                 for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson) 
    173                                                 [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
    174                                                 and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier 
    175                                                 and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)] 
    176                                 return  
    177                                         element Originating_Center { 
    178                                         if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then 
    179                                                 (string($DataCreatorRoleHolder/moles:name)) 
    180                                         else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then 
    181                                                 (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))) 
    182                                         else ('empty content') 
    183                                 } 
    184         else (), 
    185         (: Data Centre fail safe code in here.. somewhere :) 
    186         for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] 
    187             return  
    188                 for $DataCuratorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'               
    189                    and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier 
    190                    and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)] 
    191                     return  
    192                         element Data_Center { 
    193                         element Data_Center_Name { 
    194                                 element Short_Name { 
    195                                     if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
    196                                     string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
    197                             else  
    198                                 string($DataCuratorRoleHolder/moles:abbreviation) 
    199                             }, 
    200                         element Long_Name { 
    201                                 if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
    202                                     string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
    203                                 else string($DataCuratorRoleHolder/moles:name) 
    204                             } 
    205                         }, 
    206                         if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then  
    207                                 element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)} 
    208                         else (), 
    209                         for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID 
    210                         return  
    211                             element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)}, 
    212                         element  Personnel { 
    213                                 element Role {'Data Center Contact'}, 
    214                                 if (exists($DataCuratorRoleHolder/name/knownAs)) then  
    215                                     element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)} 
    216                                 else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
    217                                     element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)} 
    218                                  else (),                                        
    219                                  element Last_Name { 
    220                                           if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then  
    221                                               string($DataCuratorRoleHolder/moles:name/moles:familyName) 
    222                                     else string($DataCuratorRoleHolder/moles:name) 
    223                                     }, 
    224                                 if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then  
    225                                     element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)} 
    226                                 else  
    227                                     if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  
    228                                             (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}) 
    229                                         else (), 
    230                                 if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then  
    231                                     element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)} 
    232                                 else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then  
    233                                             element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} 
    234                                  else (), 
    235                                 if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then  
    236                                     element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)} 
    237                                 else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then  
    238                                             element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} 
    239                                         else (), 
    240                                 if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then  
    241                                     element Contact_Address { 
    242                                         for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline 
    243                                             return element Address {data($addressline)}, 
    244                                                         if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then  
    245                                         element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)} 
    246                                     else (), 
    247                                     if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then  
    248                                         element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)} 
    249                                     else (), 
    250                                      if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then  
    251                                          element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)} 
    252                                      else () 
    253                                      } 
    254                                 else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then  
    255                                     element Contact_Address { 
    256                                         for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline 
    257                                             return element Address {data($addressline)}, 
    258                                                             if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then  
    259                                             element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)} 
    260                                         else (), 
    261                                         if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then  
    262                                             element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)} 
    263                                         else (), 
    264                                          if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then  
    265                                              element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)} 
    266                                          else () 
    267                                      } 
    268                                 else () 
    269                                  } 
     161        element Use_Constraints {''}, 
     162        element Data_Set_Language {''}, 
     163        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then 
     164                for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder 
     165                    order by $DataCreatorRole/moles:startDate empty least 
     166                            return 
     167                              (:##for $DataCreatorRoleHolder in $targetCollection/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson):) 
     168                                for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson) 
     169                                                [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     170                                                and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier 
     171                                                and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)] 
     172                                return 
     173                                        element Originating_Center { 
     174                                        if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then 
     175                                                (string($DataCreatorRoleHolder/moles:name)) 
     176                                        else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then 
     177                                                (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))) 
     178                                        else ('empty content') 
     179                                } 
     180        else (), 
     181        (: Data Centre fail safe code in here.. somewhere :) 
     182        for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] 
     183            return 
     184                for $DataCuratorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     185                   and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier 
     186                   and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)] 
     187                    return 
     188                        element Data_Center { 
     189                        element Data_Center_Name { 
     190                                element Short_Name { 
     191                                    if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then 
     192                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
     193                            else 
     194                                string($DataCuratorRoleHolder/moles:abbreviation) 
     195                            }, 
     196                        element Long_Name { 
     197                                if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then 
     198                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
     199                                else string($DataCuratorRoleHolder/moles:name) 
     200                            } 
    270201                        }, 
    271                         (: fail safe... :) 
    272                         (: SJD Updated to pull straight from dgOrganisation as "backup fail safe" :) 
    273                         if (exists(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation)) then 
    274                             element Data_Center { 
    275                                 element Data_Center_Name {  
    276                                     element Short_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:abbreviation)}, 
    277                                     element Long_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:name)}  
    278                                 }, 
    279                                 element Data_Center_URL {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:contactDetails/moles:URI) cast as xs:anyURI}, 
    280                                 element Personnel {  
    281                                     element Role {''}, 
    282                                     element Last_Name {''}  
    283                                  } 
    284                             } 
    285                         else 
    286                             (: "old" fail safe :) 
    287                             element Data_Center { 
    288                                 element Data_Center_Name {  
    289                                     element Short_Name {''}  
    290                                   }, 
    291                             element Personnel {  
    292                                 element Role {''}, 
    293                                 element Last_Name {''}  
    294                              } 
    295                             }, 
    296         element Distribution {''}, 
    297         element Multimedia_Sample {''}, 
    298         element Reference {''}, 
    299         element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)}, 
    300         for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
     202                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then 
     203                                element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)} 
     204                        else (), 
     205                        for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID 
     206                        return 
     207                            element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)}, 
     208                        element  Personnel { 
     209                                element Role {'Data Center Contact'}, 
     210                                if (exists($DataCuratorRoleHolder/name/knownAs)) then 
     211                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)} 
     212                                else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then 
     213                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)} 
     214                                 else (), 
     215                                 element Last_Name { 
     216                                          if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then 
     217                                              string($DataCuratorRoleHolder/moles:name/moles:familyName) 
     218                                    else string($DataCuratorRoleHolder/moles:name) 
     219                                    }, 
     220                                if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then 
     221                                    element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)} 
     222                                else 
     223                                    if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then 
     224                                            (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}) 
     225                                        else (), 
     226                                if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then 
     227                                    element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)} 
     228                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then 
     229                                            element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} 
     230                                 else (), 
     231                                if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then 
     232                                    element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)} 
     233                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then 
     234                                            element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} 
     235                                        else (), 
     236                                if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then 
     237                                    element Contact_Address { 
     238                                        for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline 
     239                                            return element Address {data($addressline)}, 
     240                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then 
     241                                        element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)} 
     242                                    else (), 
     243                                    if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then 
     244                                        element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)} 
     245                                    else (), 
     246                                     if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then 
     247                                         element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)} 
     248                                     else () 
     249                                     } 
     250                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then 
     251                                    element Contact_Address { 
     252                                        for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline 
     253                                            return element Address {data($addressline)}, 
     254                                                            if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then 
     255                                            element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)} 
     256                                        else (), 
     257                                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then 
     258                                            element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)} 
     259                                        else (), 
     260                                         if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then 
     261                                             element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)} 
     262                                         else () 
     263                                     } 
     264                                else () 
     265                                 } 
     266                        }, 
     267                        (: fail safe... :) 
     268                        (: SJD Updated to pull straight from dgOrganisation as "backup fail safe" :) 
     269                        if (exists(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation)) then 
     270                            element Data_Center { 
     271                                element Data_Center_Name { 
     272                                    element Short_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:abbreviation)}, 
     273                                    element Long_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:name)} 
     274                                }, 
     275                                element Data_Center_URL {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:contactDetails/moles:URI) cast as xs:anyURI}, 
     276                                element Personnel { 
     277                                    element Role {''}, 
     278                                    element Last_Name {''} 
     279                                 } 
     280                            } 
     281                        else 
     282                            (: "old" fail safe :) 
     283                            element Data_Center { 
     284                                element Data_Center_Name { 
     285                                    element Short_Name {''} 
     286                                  }, 
     287                            element Personnel { 
     288                                element Role {''}, 
     289                                element Last_Name {''} 
     290                             } 
     291                            }, 
     292        element Distribution {''}, 
     293        element Multimedia_Sample {''}, 
     294        element Reference {''}, 
     295        element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)}, 
     296        for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
    301297            (: BNL need to make sure we have a function for doing related URLs :) 
    302             return 
    303                 if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then  
    304                     () 
    305                 else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then  
    306                     element Related_URL { 
    307                             element URL {data($DG/moles:instance/moles:URI)}, 
    308                             if (exists($DG/moles:instance/moles:instanceComment)) then  
    309                                     element Description {data($DG/moles:instance/moles:instanceComment)}             
    310                             else  
    311                                     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.'} 
    312                             } 
    313             else (), 
    314              (: SJD: need to put in some logic to detect whether its moles with a straight dgSimpleLink or complex dgSimpleLink/name|URL. grrrrr.  :)  
    315              (: SJD: following logic ensures only moles 1.4 with both name AND url entered (i.e. valid ones!) are used... :) 
     298            return 
     299                if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then 
     300                    () 
     301                else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then 
     302                    element Related_URL { 
     303                            element URL {data($DG/moles:instance/moles:URI)}, 
     304                            if (exists($DG/moles:instance/moles:instanceComment)) then 
     305                                    element Description {data($DG/moles:instance/moles:instanceComment)} 
     306                            else 
     307                                    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.'} 
     308                            } 
     309            else (), 
     310             (: SJD: need to put in some logic to detect whether its moles with a straight dgSimpleLink or complex dgSimpleLink/name|URL. grrrrr.  :) 
     311             (: SJD: following logic ensures only moles 1.4 with both name AND url entered (i.e. valid ones!) are used... :) 
    316312                for $RelURL_Desc in (1 to count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name/../moles:URL)) 
    317             return               
    318                 element Related_URL{           
    319                     element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name/../moles:URL) cast as xs:anyURI}, 
    320                     element Description {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name)} 
    321                 }, 
    322              
    323             (: SJD: following logic ensures only moles 1.3 with useable url in dgSiimpleLink entered (i.e. valid ones!) are used... :) 
    324             if (count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name|$DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:URI) = 0) then 
    325              
    326                 for $RelURL_Desc in (1 to count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink)) 
    327                 return           
    328                     element Related_URL{               
    329                         element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink) cast as xs:anyURI}, 
    330                         element Description {data('RELATED_URL_DUMMY')} 
    331                     }                
    332             else (), 
    333              
    334         element Parent_DIF {''}, 
    335         element IDN_Node { element Short_Name {''} }, 
    336         element Originating_Metadata_Node {''},  
    337         element Metadata_Name {'[CEOS IDN DIF]'}, 
    338         element Metadata_Version {'9.4'}, 
    339         if  (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then  
    340                 element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)} 
    341         else (), 
    342         for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate 
    343         return   
    344             element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))}, 
    345         if  (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then  
    346                 element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)} 
    347         else () 
     313            return 
     314                element Related_URL{ 
     315                    element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name/../moles:URL) cast as xs:anyURI}, 
     316                    element Description {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name)} 
     317                }, 
     318 
     319            (: SJD: following logic ensures only moles 1.3 with useable url in dgSiimpleLink entered (i.e. valid ones!) are used... :) 
     320            if (count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name|$DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:URI) = 0) then 
     321 
     322                for $RelURL_Desc in (1 to count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink)) 
     323                return 
     324                    element Related_URL{ 
     325                        element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink) cast as xs:anyURI}, 
     326                        element Description {data('RELATED_URL_DUMMY')} 
     327                    } 
     328            else (), 
     329 
     330        element Parent_DIF {''}, 
     331        element IDN_Node { element Short_Name {''} }, 
     332        element Originating_Metadata_Node {''}, 
     333        element Metadata_Name {'[CEOS IDN DIF]'}, 
     334        element Metadata_Version {'9.4'}, 
     335        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then 
     336                element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)} 
     337        else (), 
     338        for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate 
     339        return 
     340            element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))}, 
     341        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then 
     342                element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)} 
     343        else () 
    348344        } (:    </DIF> :) 
Note: See TracChangeset for help on using the changeset viewer.