source: CommonItems/trunk/XSLT/one-off_XSLT/ndg_to_DC.xsl @ 1364

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/CommonItems/trunk/XSLT/one-off_XSLT/ndg_to_DC.xsl@1364
Revision 1364, 5.9 KB checked in by selatham, 14 years ago (diff)

deprecating the two stage DIF and DC production XSLs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!-- An XSLT transformation to create an OAI-PMH unqualified Dublin Core record from an NDG 'B-stub' MetadataModel 
3     document.
4     (The B-stub is created with a separate xquery).
5
6     DEPRECATED 04/08/06 Replaced by /ndgsvn/TI07-MOLES/trunk/DublinCore/XQuery/NDG-DublinCore.xquery   
7     Author - Sue Latham 01/06/2005
8     Copyright (C) 2005 CCLRC & NERC( Natural Environment Research Council ).
9    This software may be distributed under the terms of the
10    Q Public License, version 1.0 or later. http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt
11-->
12<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"    xmlns:dc="http://purl.org/dc/elements/1.1/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
13        <xsl:output method="xml" encoding="UTF-8"  indent="yes"/>
14       
15        <xsl:template match="/">
16                <xsl:apply-templates/>
17        </xsl:template>
18        <xsl:template match="dgMetadata">
19                <xsl:apply-templates select="dgMetadataRecord"/>
20        </xsl:template>
21        <xsl:template match="dgMetadataRecord">
22                <oai_dc:dc      xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/    http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
23                        <!--<xsl:attribute name="xmlns:xsi">"http://www.w3.org/2001/XMLSchema-instance"</xsl:attribute>
24                        <xsl:attribute name="xsi:schemaLocation">"http://go-essp.org/dif_v9.4 http://ndg.nerc.ac.uk/schemas/dif_v9.4.xsd"</xsl:attribute> -->
25                        <xsl:apply-templates select="dgDataEntity"/>
26        </oai_dc:dc >                                           
27        </xsl:template>
28        <xsl:template match="dgDataEntity">
29                <xsl:variable name="DataEntityID" select="concat(preceding-sibling::dgMetadataID/repositoryIdentifier,':', 'DC',':', preceding-sibling::dgMetadataID/localIdentifier)"/>
30                         <dc:title xml:lang="en">
31                                <xsl:value-of select="preceding-sibling::name"/>
32                        </dc:title>
33
34                        <xsl:for-each select="dgDataRoles/dgDataCreator/dgRoleHolder">
35                                <xsl:choose>
36                                        <xsl:when test="endDate">
37                                                <!-- if the RoleHolder has an end date ignore it. There should be only one RoleHolder  that is current -->
38                                        </xsl:when>
39                                        <xsl:otherwise>
40                                                        <xsl:choose>
41                                                                <xsl:when test="dgOrganisation">
42                                                                <!--    <xsl:variable name="Orgkey" select="dgOrganisationID/localIdentifier"/>
43                                                                        <xsl:for-each select="key('dgOrganisationkey', $Orgkey)"> -->
44                                                                                <dc:creator>
45                                                                                        <xsl:value-of select="dgOrganisation/name"/>
46                                                                                </dc:creator>
47                                                                </xsl:when>
48                                                                <xsl:when test="dgPerson">
49                                                                <!--    <xsl:variable name="Personkey" select="dgPersonID/localIdentifier"/>
50                                                                        <xsl:for-each select="key('dgPersonkey', $Personkey)"> -->
51                                                                                <dc:creator>
52                                                                                        <xsl:value-of select="concat(dgPerson/name/initials,' ',dgPerson/name/familyName)"/>
53                                                                                </dc:creator>
54                                                                </xsl:when>
55                                                        </xsl:choose>
56                                        </xsl:otherwise>
57                                </xsl:choose>
58                        </xsl:for-each>
59                       
60                        <!-- Pick out only hierarchy's of the GCMD terms for the subjecty. Only created if a top level GCMD term appears first. -->
61                        <xsl:for-each select="dgDataSummary/dgParameterSummary/dgStdParameterMeasured">
62                                        <xsl:if test="(./ListLevel = 0 ) and (./dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )">
63                                        <dc:subject>
64                                                <xsl:value-of select="./dgValidTerm"/>
65                                                        <xsl:choose>
66                                                                <xsl:when test="(./dgValidSubterm/ListLevel = 1 ) and
67                                                                (./dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )">
68                                                                        <xsl:value-of select="concat(' ',./dgValidSubterm/dgValidTerm)"/>
69                                                                </xsl:when>
70                                                                <xsl:otherwise>Unknown Topic</xsl:otherwise>
71                                                        </xsl:choose>   
72                                                        <xsl:choose>
73                                                                <xsl:when test="(./dgValidSubterm/dgValidSubterm/ListLevel = 2 ) and
74                                                                (./dgValidSubterm/dgValidSubterm/dgValidTermID/ParentListID = 'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' )">
75                                                                        <xsl:value-of select="concat(' ',./dgValidSubterm/dgValidSubterm/dgValidTerm)"/>
76                                                                </xsl:when>
77                                                                <xsl:otherwise>Unknown Term</xsl:otherwise>
78                                                        </xsl:choose>
79                                                        <xsl:if test="./dgValidSubterm/dgValidSubterm/dgValidSubterm">
80                                                                <xsl:value-of select="concat(' ',./dgValidSubterm/dgValidSubterm/dgValidSubterm/dgValidTerm)"/>
81                                                                <xsl:value-of select="concat(' ',../ParameterName)"/>
82                                                        </xsl:if>       
83                                                </dc:subject>
84                                        </xsl:if>
85                        </xsl:for-each>
86                       
87                        <!-- Get the ISO topic category stuff out as a subject -->
88                        <xsl:for-each select="following-sibling::dgStructuredKeyword">
89                                        <xsl:if test="./dgValidTermID/ParentListID = 'ISO 19115 Topic Category'">
90                                                        <dc:subject>
91                                                                <xsl:value-of select="./dgValidTerm"/>
92                                                        </dc:subject>
93                                        </xsl:if>
94                        </xsl:for-each>
95                       
96                        <dc:description>
97                                <xsl:value-of select="preceding-sibling::dgMetadataDescription/abstract/abstractText"/>
98                        </dc:description>
99                               
100                        <xsl:for-each select="dgDataRoles/dgDataCurator/dgRoleHolder">
101                                <xsl:choose>
102                                        <xsl:when test="endDate" >
103                                                <!-- if the RoleHolder has an end date ignore it. There should be only one RoleHolder  that is current -->
104                                        </xsl:when>
105                                        <xsl:when test="dgRoleID" >
106                                                <!-- if the RoleHolder is not a dgPerson or dgOrganisation ignore it.  -->
107                                        </xsl:when>
108                                        <xsl:otherwise>
109                                                <dc:publisher>
110                                                        <xsl:choose>
111                                                                <xsl:when test="dgOrganisation">
112                                                                        <xsl:value-of select="dgOrganisation/name"/>
113                                                                </xsl:when>
114                                                                <xsl:when test="dgPerson">
115                                                                                <xsl:value-of select="dgPerson/name"/>
116                                                                </xsl:when>
117                                                                <xsl:otherwise>Unknown Publisher</xsl:otherwise>
118                                                        </xsl:choose>
119                                                </dc:publisher> 
120                                        </xsl:otherwise>
121                                </xsl:choose>
122                        </xsl:for-each>
123                       
124
125                        <xsl:if test="following-sibling::DataProvenance/RecordCreation">
126                                <dc:date>
127                                        <xsl:value-of select="following-sibling::DataProvenance/RecordCreation/CreatedDate"></xsl:value-of>
128                                </dc:date>
129                        </xsl:if>
130                        <dc:identifier>
131                                <xsl:value-of select="$DataEntityID"/>
132                        </dc:identifier>       
133        </xsl:template>
134</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.