Changeset 225 for Document_handling


Ignore:
Timestamp:
04/10/04 17:35:47 (15 years ago)
Author:
selatham
Message:

Amended for version 1.1 of the Metadata Model schema, plus now uses B-stub created by xquery.

Location:
Document_handling/trunk/XSLT
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Document_handling/trunk/XSLT/dif_to_ndg.xsl

    r223 r225  
    66      Version 1.1 01/08/04 amended for changes to MDM schema as at v1.1. 
    77                         09/08/04 amended to split address lines, use GCMD level 4 name as ParameterName if GCMD detailed parameter doesn't exist. 
     8                         26/08/04 amended to collect metadataID from DIF if it exists splitting on new format with slashes instead of colons. 
    89--> 
    910<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    10         <xsl:output method="xml" encoding="UTF-8" doctype-system= "M:\Nerc DataGrid\MetaDataModel\ndgmetadata_v1.1.xsd"  indent="yes" /> 
     11        <xsl:output method="xml" encoding="UTF-8"  indent="yes" /> 
     12         
    1113      <xsl:template match="/"> 
    1214                <xsl:apply-templates/> 
    1315        </xsl:template> 
    1416         
     17        <!-- This template is for splitting a text element which contains (unix) line breaks into separate text elements.  
     18              Here it is used to split an address element into separate address lines elements. --> 
    1519        <xsl:template match="node()" mode="replaceLineBreaks" 
    1620              name="replaceLineBreaks"> 
     
    3640              </xsl:call-template> 
    3741            </xsl:when> 
    38             <!-- if the string doesn't contain a line break, just give its 
    39                  value, followed by an addressline element --> 
     42            <!-- if the string doesn't contain a line break, and its not an empty field, 
     43                   just put its value into an addressline element. --> 
    4044            <xsl:otherwise> 
    4145              <xsl:if test="$string !=''">         
     
    4549          </xsl:choose> 
    4650        </xsl:template> 
    47  
     51         
     52        <!-- This is the main template which takes content from a DIF record and formats into NDG_B records. --> 
    4853        <xsl:template match="DIF"> 
    4954                 <dgMetadata> 
    5055                         <dgMetadataRecord> 
    5156                                     <dgMetadataID> 
     57                                     <!-- split up Entry_ID into correct parts for NDG_B. Rather messy. --> 
    5258                                         <repositoryIdentifier>  
    53                                                 <xsl:value-of  select="substring-before(Entry_ID,':')"/> 
     59                                                <xsl:value-of  select="substring-before(substring-after(Entry_ID,'/'),'/')"/> 
    5460                                         </repositoryIdentifier> 
    5561                                         <localIdentifier>       
    56                                                 <xsl:value-of select="substring-after(Entry_ID,':')"/> 
     62                                                <xsl:value-of select="substring-before(substring-after(substring-after(Entry_ID,'/'),'/'),'/')"/> 
    5763                                         </localIdentifier>                                              
    5864                                     </dgMetadataID> 
  • Document_handling/trunk/XSLT/ndg_to_dif.xsl

    r219 r225  
    11<?xml version="1.0" encoding="UTF-8"?> 
    2 <!-- An XSLT transformation to create a GCMD DIF from an NDG MetadataModel   
    3      document containing a DataEntity and associated first level entities. 
     2<!-- An XSLT transformation to create a GCMD DIF from an NDG 'B-stub' MetadataModel   
     3     document. This contains a DataEntity and associated first level entities.  
     4     (The B-stub is created with a separate xquery). 
    45      
    56     Author - Sue Latham 01/03/2004 
     7     Updated 01/09/2004 - New version(1.1) of NDG_B schema and change to using B-stub. 
    68--> 
    79<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    810        <xsl:output method="xml" encoding="UTF-8" doctype-system="http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.dtd" indent="yes"/> 
    911        <xsl:key name="dgMetadatakey" match="//dgMetadata/dgMetadataRecord" use="concat(dgMetadataID/repositoryIdentifier, dgMetadataID/localIdentifier)"/> 
     12        <!-- change this bit about organisation key and person key when I know where they will appear in the b-stub. Will keys be needed?--> 
    1013        <xsl:key name="dgOrganisationkey" match="//dgMetadata/dgOrganisation" use="dgMetadataID/localIdentifier"/> 
    1114        <xsl:key name="dgPersonkey" match="//dgMetadata/dgPerson" use="dgMetadataID/localIdentifier"/> 
     15 
    1216        <xsl:template match="/"> 
    1317                <xsl:apply-templates/> 
     
    1721        </xsl:template> 
    1822        <xsl:template match="dgMetadataRecord"> 
     23                <DIF> 
    1924                <xsl:apply-templates select="dgDataEntity"/> 
     25                <xsl:apply-templates select="dgDataProvenance"/> 
     26                </DIF> 
    2027        </xsl:template> 
    2128        <xsl:template match="dgDataEntity"> 
    2229                <xsl:variable name="Nameofdataset" select="preceding-sibling::name"/> 
    23                 <xsl:variable name="DataEntityID" select="concat(preceding-sibling::dgMetadataID/repositoryIdentifier,':',preceding-sibling::dgMetadataID/localIdentifier)"/> 
    24                 <DIF> 
     30                <xsl:variable name="DataEntityID" select="concat('/',preceding-sibling::dgMetadataID/repositoryIdentifier,'/',preceding-sibling::dgMetadataID/localIdentifier)"/> 
    2531                        <Entry_ID> 
    2632                                <xsl:value-of select="$DataEntityID"/> 
     
    6268                        </xsl:for-each> 
    6369                         
    64                         <xsl:for-each select="dgDataSummary/dgParameterSummary"> 
    65                                 <Parameters> 
    66                                         <Category> 
    67                                                 <xsl:choose> 
    68                                                 <xsl:when test="(dgStdParameterMeasured/ListLevel = 1) and (dgStdParameterMeasured/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.dtd' )"> 
    69                                                         <xsl:value-of select="dgStdParameterMeasured/dgValidTerm"/> 
    70                                                 </xsl:when> 
    71                                                 <xsl:otherwise>Unknown Category</xsl:otherwise> 
    72                                                 </xsl:choose> 
    73                                         </Category>      
    74                                         <Topic> 
    75                                                 <xsl:choose> 
    76                                                 <xsl:when test="(dgStdParameterMeasured/dgValidSubterm/ListLevel = 2 ) and  
    77                                                 (dgStdParameterMeasured/dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.dtd' )"> 
    78                                                         <xsl:value-of select="dgStdParameterMeasured/dgValidSubterm/dgValidTerm"/> 
    79                                                 </xsl:when> 
    80                                                 <xsl:otherwise>Unknown Topic</xsl:otherwise> 
    81                                                 </xsl:choose> 
    82                                         </Topic>         
    83                                         <Term> 
    84                                                 <xsl:choose> 
    85                                                 <xsl:when test="(dgStdParameterMeasured/dgValidSubterm/dgValidSubterm/ListLevel = 3 ) and  
    86                                                 (dgStdParameterMeasured/dgValidSubterm/dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.dtd' )"> 
    87                                                         <xsl:value-of select="dgStdParameterMeasured/dgValidSubterm/dgValidSubterm/dgValidTerm"/> 
    88                                                 </xsl:when> 
    89                                                 <xsl:otherwise>Unknown Term</xsl:otherwise> 
    90                                                 </xsl:choose> 
    91                                         </Term>  
    92                                         <xsl:if test="dgStdParameterMeasured/dgValidSubterm/dgValidSubterm/dgValidSubterm"> 
    93                                                 <Variable> 
    94                                                         <xsl:value-of select="dgStdParameterMeasured/dgValidSubterm/dgValidSubterm/dgValidSubterm/dgValidTerm"/> 
    95                                                 </Variable> 
    96                                                 <Detailed_Variable> 
    97                                                         <xsl:value-of select="ParameterName"/> 
    98                                                 </Detailed_Variable> 
    99                                         </xsl:if>        
    100                                 </Parameters> 
    101                         </xsl:for-each> 
     70                        <!-- Pick out only hierarchy's of the GCMD terms. Only created if a top level GCMD term appears first. --> 
     71                        <xsl:for-each select="dgDataSummary/dgParameterSummary/dgStdParameterMeasured"> 
     72                                        <xsl:if test="(./ListLevel = 1) and (./dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )"> 
     73                                                <Parameters> 
     74                                                <Category>      <xsl:value-of select="./dgValidTerm"/></Category>        
     75                                                <Topic> 
     76                                                        <xsl:choose> 
     77                                                        <xsl:when test="(./dgValidSubterm/ListLevel = 2 ) and  
     78                                                        (./dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )"> 
     79                                                                <xsl:value-of select="./dgValidSubterm/dgValidTerm"/> 
     80                                                        </xsl:when> 
     81                                                        <xsl:otherwise>Unknown Topic</xsl:otherwise> 
     82                                                        </xsl:choose> 
     83                                                </Topic>         
     84                                                <Term> 
     85                                                        <xsl:choose> 
     86                                                        <xsl:when test="(./dgValidSubterm/dgValidSubterm/ListLevel = 3 ) and  
     87                                                        (./dgValidSubterm/dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )"> 
     88                                                                <xsl:value-of select="./dgValidSubterm/dgValidSubterm/dgValidTerm"/> 
     89                                                        </xsl:when> 
     90                                                        <xsl:otherwise>Unknown Term</xsl:otherwise> 
     91                                                        </xsl:choose> 
     92                                                </Term>  
     93                                                <xsl:if test="./dgValidSubterm/dgValidSubterm/dgValidSubterm"> 
     94                                                        <Variable> 
     95                                                                <xsl:value-of select="./dgValidSubterm/dgValidSubterm/dgValidSubterm/dgValidTerm"/> 
     96                                                        </Variable> 
     97                                                        <Detailed_Variable> 
     98                                                                <xsl:value-of select="../ParameterName"/> 
     99                                                        </Detailed_Variable> 
     100                                                </xsl:if>        
     101                                                </Parameters> 
     102                                        </xsl:if> 
     103                        </xsl:for-each> 
     104 
    102105                        <xsl:for-each select="RelatedDeployment"> 
    103                                 <xsl:variable name="RDkey" select="concat( ActivityID/repositoryIdentifier, ActivityID/localIdentifier)"/> 
    104                                 <xsl:for-each select="key('dgMetadatakey', $RDkey)"> 
     106                        <!-- not needed with everything already in b-stub record  
     107                                <xsl:variable name="RDkey" select="concat( activity/ActivityID/repositoryIdentifier, ActivityID/localIdentifier)"/> 
     108                                <xsl:for-each select="key('dgMetadatakey', $RDkey)"> --> 
    105109                                        <Project> 
    106110                                                <Short_Name> 
    107                                                         <xsl:value-of select="abbreviation"/> 
     111                                                        <xsl:value-of select="activity/abbreviation"/> 
    108112                                                </Short_Name> 
    109113                                                <Long_Name> 
    110                                                         <xsl:value-of select="name"/> 
     114                                                        <xsl:value-of select="activity/name"/> 
    111115                                                </Long_Name> 
    112116                                        </Project> 
    113                                 </xsl:for-each> 
    114                         </xsl:for-each> 
     117                        </xsl:for-each> 
     118                         
    115119                        <xsl:for-each select="dgDataRoles/dgDataCurator/dgRoleHolder"> 
    116120                                <xsl:choose> 
    117                                         <xsl:when test="endDate"> 
     121                                        <xsl:when test="endDate" > 
    118122                                                <!-- if the RoleHolder has an end date ignore it. There should be only one RoleHolder  that is current --> 
     123                                        </xsl:when> 
     124                                        <xsl:when test="dgRoleID" > 
     125                                                <!-- if the RoleHolder is not a dgPerson or dgOrganisation ignore it.  --> 
    119126                                        </xsl:when> 
    120127                                        <xsl:otherwise> 
     
    137144                                                                        </xsl:for-each> 
    138145                                                                </xsl:when> 
     146                                                                <xsl:when test="dgPersonID"> 
     147                                                                        <xsl:variable name="Personkey" select="dgPersonID/localIdentifier"/> 
     148                                                                        <xsl:for-each select="key('dgPersonkey', $Personkey)"> 
     149                                                                                <Data_Center_Name> 
     150                                                                                        <Short_Name> 
     151                                                                                                <xsl:value-of select="abbreviation"/> 
     152                                                                                        </Short_Name> 
     153                                                                                        <Long_Name> 
     154                                                                                                <xsl:value-of select="name"/> 
     155                                                                                        </Long_Name> 
     156                                                                                </Data_Center_Name> 
     157                                                                                <Data_Center_URL> 
     158                                                                                        <xsl:value-of select="contactDetails/URI"/> 
     159                                                                                </Data_Center_URL> 
     160                                                                        </xsl:for-each> 
     161                                                                </xsl:when> 
    139162                                                                <xsl:otherwise> 
    140                                                                         <Short_Name>Unknown Data Centre</Short_Name> 
     163                                                                        <Data_Center_Name> 
     164                                                                                <Short_Name>Unknown Data Centre</Short_Name> 
     165                                                                        </Data_Center_Name> 
    141166                                                                </xsl:otherwise> 
    142167                                                        </xsl:choose> 
    143                                                         <Data_Set_ID> 
    144                                                                 <xsl:value-of select="$DataEntityID"/> 
    145                                                         </Data_Set_ID> 
     168                                                        <xsl:for-each select="//dgMetadataRecord/dgDataEntity/dgDataGranule">                                                    
     169                                                                <Data_Set_ID> 
     170                                                                        <xsl:value-of select="./dataModelID"/> 
     171                                                                </Data_Set_ID> 
     172                                                        </xsl:for-each> 
    146173                                                        <Personnel> 
    147174                                                                <Role>Data Center Contact</Role> 
     
    161188                                <xsl:value-of select="preceding-sibling::dgMetadataDescription/abstract/abstractText"/> 
    162189                        </Summary> 
    163                 </DIF> 
    164         </xsl:template> 
    165         <!--    <xsl:template match="dgActivity"> 
    166         <Project> 
    167                 <xsl:value-of select="dgActivityDataCampaign"/> 
    168                 <xsl:value-of select="dgActivityDataProject"/> 
    169                 <xsl:value-of select="dgActivityDataCollection"/> 
    170                 <xsl:value-of select="dgActivityDataInvestigation"/> 
    171         </Project> 
    172 </xsl:template>  
     190                         
     191                        <Related_URL> 
     192                                <URL_Content_Type>NDG_B_SERVICE</URL_Content_Type> 
     193                                <URL>badc.nerc.ac.uk</URL> 
     194                                <Description>The NDG service for browsing metadata.</Description> 
     195                        </Related_URL> 
     196                         
     197                        <!-- work out what, if any, A service is available. Have to look at 'scheme' part if datasetID --> 
     198                        <xsl:for-each select="//dgMetadataRecord/dgDataEntity/dgDataGranule"> 
     199                                <xsl:choose> 
     200                                        <xsl:when test="starts-with(./dataModelID, '/NDG_A_')"> 
     201                                                <Related_URL> 
     202                                                        <URL_Content_Type>NDG_A_SERVICE</URL_Content_Type> 
     203                                                        <URL>http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=</URL> 
     204                                                        <Description>The NDG service delivering data via NDG A metadata.</Description> 
     205                                                </Related_URL> 
     206                                        </xsl:when> 
     207                                        <xsl:when test="starts-with(./dataModelID, '/CDML_')"> 
     208                                                <Related_URL> 
     209                                                        <URL_Content_Type>NDG_A_SERVICE</URL_Content_Type> 
     210                                                        <URL>http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/</URL> 
     211                                                        <Description>The NDG service delivering data via NDG CDML.</Description> 
     212                                                </Related_URL> 
     213                                        </xsl:when> 
     214                                </xsl:choose> 
     215                        </xsl:for-each> 
     216        </xsl:template> 
     217        <xsl:template match="dgDataProvenance"> 
     218                <xsl:if test="./RecordCreation"> 
     219                        <DIF_Creation_Date> 
     220                                <xsl:value-of select="./RecordCreation/CreatedDate"></xsl:value-of> 
     221                        </DIF_Creation_Date> 
     222                </xsl:if> 
     223                <xsl:if test="./RecordUpdate"> 
     224                        <Last_DIF_Revision_Date> 
     225                        <xsl:value-of select="./RecordUpdate[last()]/UpdateDate[last()]"></xsl:value-of> 
     226                        </Last_DIF_Revision_Date> 
     227                        <DIF_Revision_History> 
     228                        <xsl:for-each select="./RecordUpdate">   
     229                                        <xsl:value-of select="./UpdateDate"></xsl:value-of> 
     230                                        <xsl:for-each select="./UpdateSummary"> 
     231                                                        <xsl:value-of select="."></xsl:value-of> 
     232                                        </xsl:for-each> 
     233                        </xsl:for-each> 
     234                        </DIF_Revision_History> 
     235                </xsl:if> 
     236                 
    173237 
    174 <xsl:template match="dgActivityCoverage"> 
    175         <Location> 
    176                 <Location_Name> 
    177                         <xsl:value-of select="dgArea/dgValidTerm"/> 
    178                 </Location_Name> 
    179         </Location> 
    180 </xsl:template> --> 
     238        </xsl:template> 
    181239</xsl:stylesheet> 
Note: See TracChangeset for help on using the changeset viewer.