Bug 3644 Add support for NORMARC
[koha-equinox.git] / koha-tmpl / intranet-tmpl / prog / en / xslt / NORMARCslim2OAIDC.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
3         <xsl:import href="MARC21slimUtils.xsl"/>
4         <xsl:output method="xml" indent="yes"/>
5         <!--Added ISBN and deleted attributes 6/04 jer-->
6         <xsl:template match="/">
7                 <xsl:if test="marc:collection">
8                         <oai_dc:dcCollection xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
9                                 <xsl:for-each select="marc:collection">
10                                         <xsl:for-each select="marc:record">
11                                                 <oai_dc:dc>
12                                                         <xsl:apply-templates select="."/>
13                                                 </oai_dc:dc>
14                                         </xsl:for-each>
15                                 </xsl:for-each>
16                         </oai_dc:dcCollection>
17                 </xsl:if>
18                 <xsl:if test="marc:record">
19           <oai_dc:dc
20             xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
21             xmlns:dc="http://purl.org/dc/elements/1.1/"
22             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
23             xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
24                                 <xsl:apply-templates/>
25                         </oai_dc:dc>
26                 </xsl:if>
27         </xsl:template>
28         <xsl:template match="marc:record">
29                 <xsl:variable name="leader" select="marc:leader"/>
30                 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
31                 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
32                 <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
33                 <xsl:for-each select="marc:datafield[@tag=245]">
34                         <dc:title>
35                                 <xsl:call-template name="subfieldSelect">
36                                         <xsl:with-param name="codes">abfghk</xsl:with-param>
37                                 </xsl:call-template>
38                         </dc:title>
39                 </xsl:for-each>
40                 <xsl:for-each select="marc:datafield[@tag=100]|marc:datafield[@tag=110]|marc:datafield[@tag=111]|marc:datafield[@tag=700]|marc:datafield[@tag=710]|marc:datafield[@tag=711]|marc:datafield[@tag=720]">
41                         <dc:creator>
42                                 <xsl:value-of select="."/>
43                         </dc:creator>
44                 </xsl:for-each>
45                 <dc:type>
46                         <xsl:if test="$leader7='c'">
47                                 <!--Remove attribute 6/04 jer-->
48                                 <!--<xsl:attribute name="collection">yes</xsl:attribute>-->
49                                 <xsl:text>collection</xsl:text>
50                         </xsl:if>
51                         <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
52                                 <!--Remove attribute 6/04 jer-->
53                                 <!--<xsl:attribute name="manuscript">yes</xsl:attribute>-->
54                                 <xsl:text>manuscript</xsl:text>
55                         </xsl:if>
56                         <xsl:choose>
57                                 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
58                                 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
59                                 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
60                                 <xsl:when test="$leader6='i' or $leader6='j'">sound recording</xsl:when>
61                                 <xsl:when test="$leader6='k'">still image</xsl:when>
62                                 <xsl:when test="$leader6='g'">moving image</xsl:when>
63                                 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
64                                 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
65                                 <xsl:when test="$leader6='p'">mixed material</xsl:when>
66                         </xsl:choose>
67                 </dc:type>
68                 <xsl:for-each select="marc:datafield[@tag=655]">
69                         <dc:type>
70                                 <xsl:value-of select="."/>
71                         </dc:type>
72                 </xsl:for-each>
73                 <xsl:for-each select="marc:datafield[@tag=260]">
74                         <dc:publisher>
75                                 <xsl:call-template name="subfieldSelect">
76                                         <xsl:with-param name="codes">ab</xsl:with-param>
77                                 </xsl:call-template>
78                         </dc:publisher>
79                 </xsl:for-each>
80                 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='c']">
81                         <dc:date>
82                                 <xsl:value-of select="."/>
83                         </dc:date>
84                 </xsl:for-each>
85                 <dc:language>
86                         <xsl:value-of select="substring($controlField008,36,3)"/>
87                 </dc:language>
88                 <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
89                         <dc:format>
90                                 <xsl:value-of select="."/>
91                         </dc:format>
92                 </xsl:for-each>
93                 <xsl:for-each select="marc:datafield[@tag=520]">
94                         <dc:description>
95                                 <xsl:value-of select="marc:subfield[@code='a']"/>
96                         </dc:description>
97                 </xsl:for-each>
98                 <xsl:for-each select="marc:datafield[@tag=521]">
99                         <dc:description>
100                                 <xsl:value-of select="marc:subfield[@code='a']"/>
101                         </dc:description>
102                 </xsl:for-each>
103                 <xsl:for-each select="marc:datafield[500&lt;@tag][@tag&lt;=599][not(@tag=506 or @tag=530 or @tag=540 or @tag=546)]">
104                         <dc:description>
105                                 <xsl:value-of select="marc:subfield[@code='a']"/>
106                         </dc:description>
107                 </xsl:for-each>
108                 <xsl:for-each select="marc:datafield[@tag=600]">
109                         <dc:subject>
110                                 <xsl:call-template name="subfieldSelect">
111                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
112                                 </xsl:call-template>
113                         </dc:subject>
114                 </xsl:for-each>
115                 <xsl:for-each select="marc:datafield[@tag=610]">
116                         <dc:subject>
117                                 <xsl:call-template name="subfieldSelect">
118                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
119                                 </xsl:call-template>
120                         </dc:subject>
121                 </xsl:for-each>
122                 <xsl:for-each select="marc:datafield[@tag=611]">
123                         <dc:subject>
124                                 <xsl:call-template name="subfieldSelect">
125                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
126                                 </xsl:call-template>
127                         </dc:subject>
128                 </xsl:for-each>
129                 <xsl:for-each select="marc:datafield[@tag=630]">
130                         <dc:subject>
131                                 <xsl:call-template name="subfieldSelect">
132                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
133                                 </xsl:call-template>
134                         </dc:subject>
135                 </xsl:for-each>
136                 <xsl:for-each select="marc:datafield[@tag=650]">
137                         <dc:subject>
138                                 <xsl:call-template name="subfieldSelect">
139                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
140                                 </xsl:call-template>
141                         </dc:subject>
142                 </xsl:for-each>
143                 <xsl:for-each select="marc:datafield[@tag=653]">
144                         <dc:subject>
145                                 <xsl:call-template name="subfieldSelect">
146                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
147                                 </xsl:call-template>
148                         </dc:subject>
149                 </xsl:for-each>
150                 <xsl:for-each select="marc:datafield[@tag=752]">
151                         <dc:coverage>
152                                 <xsl:call-template name="subfieldSelect">
153                                         <xsl:with-param name="codes">abcd</xsl:with-param>
154                                 </xsl:call-template>
155                         </dc:coverage>
156                 </xsl:for-each>
157                 <xsl:for-each select="marc:datafield[@tag=530]">
158                         <dc:relation type="original">
159                                 <xsl:call-template name="subfieldSelect">
160                                         <xsl:with-param name="codes">abcdu</xsl:with-param>
161                                 </xsl:call-template>
162                         </dc:relation>
163                 </xsl:for-each>
164                 <xsl:for-each select="marc:datafield[@tag=760]|marc:datafield[@tag=762]|marc:datafield[@tag=765]|marc:datafield[@tag=767]|marc:datafield[@tag=770]|marc:datafield[@tag=772]|marc:datafield[@tag=773]|marc:datafield[@tag=774]|marc:datafield[@tag=775]|marc:datafield[@tag=776]|marc:datafield[@tag=777]|marc:datafield[@tag=780]|marc:datafield[@tag=785]|marc:datafield[@tag=786]|marc:datafield[@tag=787]">
165                         <dc:relation>
166                                 <xsl:call-template name="subfieldSelect">
167                                         <xsl:with-param name="codes">ot</xsl:with-param>
168                                 </xsl:call-template>
169                         </dc:relation>
170                 </xsl:for-each>
171                 <xsl:for-each select="marc:datafield[@tag=856]">
172                         <dc:identifier>
173                                 <xsl:value-of select="marc:subfield[@code='u']"/>
174                         </dc:identifier>
175                 </xsl:for-each>
176                 <xsl:for-each select="marc:datafield[@tag=020]">
177                         <dc:identifier>
178                                 <xsl:text>URN:ISBN:</xsl:text>
179                                 <xsl:value-of select="marc:subfield[@code='a']"/>
180                         </dc:identifier>
181                 </xsl:for-each>
182                 <xsl:for-each select="marc:datafield[@tag=506]">
183                         <dc:rights>
184                                 <xsl:value-of select="marc:subfield[@code='a']"/>
185                         </dc:rights>
186                 </xsl:for-each>
187                 <xsl:for-each select="marc:datafield[@tag=540]">
188                         <dc:rights>
189                                 <xsl:value-of select="marc:subfield[@code='a']"/>
190                         </dc:rights>
191                 </xsl:for-each>
192                 <!--</oai_dc:dc>-->
193         </xsl:template>
194 </xsl:stylesheet>
195
196 <!-- Stylus Studio meta-information - (c)1998-2003 Copyright Sonic Software Corporation. All rights reserved.
197 <metaInformation>
198 <scenarios/><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
199 </metaInformation>
200 -->