source: TI07-MOLES/trunk/DIF/XQuery/NDG-DIF.xquery @ 2236

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/DIF/XQuery/NDG-DIF.xquery@2236
Revision 2236, 22.6 KB checked in by ko23, 13 years ago (diff)

Refactoring - working versions. Still slow though.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery';
2import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery';
3declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/';
4declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';
5declare namespace moles='http://ndg.nerc.ac.uk/moles';
6declare variable $targetCollection as xs:string {'TargetCollection'};
7declare variable $repositoryIdentifier as xs:string {'RepositoryID'};
8declare variable $localIdentifier as xs:string {'LocalID'};
9
10for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[
11        exists('moles:dgDataEntity')
12        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
13        and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier
14        and moles:dgMetadataID/moles:localIdentifier=$localIdentifier]
15return
16element DIF {
17        attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'},
18        element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, $utillib:moles_id_separator, 'DIF', $utillib:moles_id_separator, $DE/moles:dgMetadataID/moles:localIdentifier)},
19        element Entry_Title {string($DE/moles:name)},
20        element Data_Set_Citation {
21            for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1]
22                return
23                    for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
24                               and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier
25                               and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)]
26                        return
27                            element Data_Creator {
28                                if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then
29                                    string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))
30                                else
31                                   string($DataCreatorRoleHolder/moles:abbreviation)
32                                },
33            element Dataset_Title {string($DE/moles:name)}
34        },
35        for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[(voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID))])
36                return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then
37                    element Parameters {
38                        element Category {string($StructuredKeyword/*/moles:dgValidTerm)},
39                        if (exists($StructuredKeyword//moles:dgValidSubterm)
40                                and $StructuredKeyword//moles:dgValidSubterm != ''
41                                and $StructuredKeyword//moles:dgValidSubterm != ' ') then
42                        for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)]
43                            where exists($Subterm/moles:dgValidSubterm)
44                            order by $Subterm/moles:ListLevel
45                                return
46                                        if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}
47                                        else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}
48                                        else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}
49                                        else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}
50                                        else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}
51                        else()
52                    }
53                else(),
54        for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgDataEntity/moles:dgDataSummary/moles:dgParameterSummary/moles:dgStdParameterMeasured)[voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_deprecated, moles:dgValidTermID/moles:ParentListID) and (not(exists(moles:ListLevel)) or moles:ListLevel=0)])
55        return
56                element Parameters {data($StructuredKeyword/moles:dgValidTerm)},
57        for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[voclib:spot-vocab($voclib:iso_topic_list, moles:dgValidTermID/moles:ParentListID)])
58            return
59                element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)},
60        for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[
61        not (voclib:spot-vocab($voclib:iso_topic_list, moles:dgValidTermID/moles:ParentListID)
62        or voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID)
63        or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID)
64        )]/moles:dgValidTerm)
65        return element Keyword {string($Keyword)},
66        for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID) 
67        return
68            element Sensor_Name {
69                for $DepDPTAbbrev in ((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))
70                    return element Short_Name {data($DepDPTAbbrev)},
71                for $DepDPTName in ((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))
72                    return element Long_Name {data($DepDPTName)}
73                },
74        for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID)
75        return
76            element Source_Name {
77                for $DepObsStnAbbrev in ((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))
78                    return element Short_Name {data($DepObsStnAbbrev)},
79                for $DepObsStnName in ((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))
80                    return element Long_Name {data($DepObsStnName)}
81                },
82        for $TemporalRange in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgDateRange)
83                return
84                    element Temporal_Coverage
85                        {
86                        element Start_Date {data($TemporalRange/moles:DateRangeStart)},
87                        element End_Date {data($TemporalRange/moles:DateRangeEnd)}
88                        },
89        for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[voclib:spot-vocab($voclib:gcmd_chronostratigraphic_valids, moles:dgValidTermID/moles:ParentListID)]/moles:dgValidTerm)
90                return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}},
91        for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure)
92                return element Data_Set_Progress {data($Data_Set_Progress)},
93        for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox)
94        return
95            element Spatial_Coverage {
96                    element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)},
97                    element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)},
98                    element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)},
99                    element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)}
100                },
101        for $Location in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[voclib:spot-vocab($voclib:gcmd_location_valids, moles:dgValidTermID/moles:ParentListID)])
102                return element Location {$Location},
103        for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID)
104        return
105            element Project {
106                for $DepActAbbrev in (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)
107                    return
108                        element Short_Name {data($DepActAbbrev)},
109                for $DepActName in (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)
110                    return
111                        element Long_Name {data($DepActName)}
112                },
113        if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then
114                for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule
115                    return
116                                element Access_Constraints {
117                                if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then
118                                    concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ')
119                                else (),
120                                if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then
121                                    concat('See access control policy at ', escape-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL, true()))
122                                else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then
123                                    data($DG/moles:accessControlPolicy/moles:accessControlPolicyText)
124                                 else
125                                     for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition
126                                     return
127                                         if (exists($securityCondition/moles:conditionExplanationText)) then
128                                             concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText))
129                                         else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority))
130                            }
131                else (),
132        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then
133                for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder
134                    order by $DataCreatorRole/moles:startDate empty least
135                            return
136                                for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson)
137                                                [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
138                                                and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier
139                                                and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)]
140                                return
141                                        element Originating_Center {
142                                        if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then
143                                                (string($DataCreatorRoleHolder/moles:name))
144                                        else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then
145                                                (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))))
146                                        else ('empty content')
147                                }
148        else (),
149        for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate='']
150            return
151                for $DataCuratorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
152                   and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier
153                   and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)]
154                    return
155                        element Data_Center {
156                        element Data_Center_Name {
157                                element Short_Name {
158                                    if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then
159                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))
160                            else
161                                string($DataCuratorRoleHolder/moles:abbreviation)
162                            },
163                        element Long_Name {
164                                if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then
165                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))
166                                else string($DataCuratorRoleHolder/moles:name)
167                            }
168                        },
169                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then
170                                element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)}
171                        else (),
172                        for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID
173                        return
174                            element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, '__', $DGID/moles:schemeIdentifier, '__', $DGID/moles:localIdentifier)},
175                        element  Personnel {
176                                element Role {'Data Center Contact'},
177                                if (exists($DataCuratorRoleHolder/name/knownAs)) then
178                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)}
179                                else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then
180                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)}
181                                 else (),                                       
182                                 element Last_Name {
183                                          if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then
184                                              string($DataCuratorRoleHolder/moles:name/moles:familyName)
185                                    else string($DataCuratorRoleHolder/moles:name)
186                                    },
187                                if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then
188                                    element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)}
189                                else
190                                    if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then
191                                            (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)})
192                                        else (),
193                                if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then
194                                    element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)}
195                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then
196                                            element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)}
197                                 else (),
198                                if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then
199                                    element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)}
200                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then
201                                            element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)}
202                                        else (),
203                                if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then
204                                    element Contact_Address {
205                                        for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline
206                                            return element Address {data($addressline)},
207                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then
208                                        element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)}
209                                    else (),
210                                    if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then
211                                        element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)}
212                                    else (),
213                                     if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then
214                                         element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)}
215                                     else ()
216                                     }
217                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then
218                                    element Contact_Address {
219                                        for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline
220                                            return element Address {data($addressline)},
221                                                            if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then
222                                            element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)}
223                                        else (),
224                                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then
225                                            element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)}
226                                        else (),
227                                         if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then
228                                             element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)}
229                                         else ()
230                                     }
231                                else ()
232                                 }
233                        },
234        element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)},
235        element Related_URL  {
236            element URL_Content_Type {'NDG_B_SERVICE'},
237            element URL {data($DE/moles:dgMetadataID/moles:repositoryIdentifier)},
238            element Description {'The NDG service for browsing metadata.'}
239            },
240        for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule
241            return
242                if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then
243                    (element Related_URL {
244                            element URL_Content_Type {'NDG_A_SERVICE'},
245                            if (exists($DG/instance/URI)) then
246                                element URL {escape-uri($DG/instance/URI, true())}
247                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then
248                                element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())}
249                            else ($DG/moles:dataModelID/moles:repositoryIdentifier),
250                            element Description {'The NDG service delivering data via NDG A metadata.'}
251                        },
252                   element Related_URL {
253                            element URL_Content_Type {'GET DATA > CSML'},
254                            if (exists($DG/instance)) then
255                                element URL {escape-uri($DG/instance/URI, true())}
256                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then
257                                element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())}
258                            else (),
259                            element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'}
260                        })
261                else if ($DG/moles:dataModelID/moles:schemeIdentifier='CDML-0') then
262                        (element Related_URL {
263                                   element URL_Content_Type {'NDG_A_SERVICE'},
264                            if (exists($DG/instance)) then
265                                element URL {escape-uri($DG/instance/URI, true())}
266                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then
267                                element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}
268                            else (),
269                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}
270                            },
271                        element Related_URL {
272                            element URL_Content_Type {'GET DATA > DX'},
273                            if (exists($DG/instance)) then
274                                element URL {escape-uri($DG/instance/URI, true())}
275                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then
276                                element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}
277                            else (),
278                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}
279                            })
280                else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then
281                    element Related_URL {
282                            element URL {data($DG/moles:instance/moles:URI)},
283                            if (exists($DG/moles:instance/moles:instanceComment)) then
284                                    element Description {data($DG/moles:instance/moles:instanceComment)}           
285                            else
286                                    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.'}
287                            }
288            else (),
289            for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)
290            return
291                    element Related_URL {
292                            element URL {data($RelURL_Desc)},
293                            element Description {concat(data($RelURL_Desc/moles:name), ' - ', data($RelURL_Desc/moles:notes))}             
294                         },
295        element Metadata_Name {'[CEOS IDN DIF]'},
296        element Metadata_Version {'9.4'},
297        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then
298                element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)}
299        else (),
300        for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate
301        return 
302            element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))},
303        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then
304                element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)}
305        else ()
306        }
Note: See TracBrowser for help on using the repository browser.