Reuse sessions with same idAuthentication information.
[yazproxy-moved-to-github.git] / etc / MARC21slim2SRWDC.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" 
3         xmlns:marc="http://www.loc.gov/MARC21/slim" 
4         xmlns:srw_dc="info:srw/schema/1/dc-schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://purl.org/dc/elements/1.1/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
5
6         <xsl:import href="MARC21slimUtils.xsl"/>
7         <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
8         <!-- modification log 
9         NT 01/04:  added collection level element
10         and removed attributes
11
12 -->
13         <xsl:template match="/">
14                 <xsl:if test="marc:collection">
15                         <srw_dc:dcCollection xmlns:srw_dc="info:srw/schema/1/dc-schema" xsi:schemaLocation="info:srw/schema/1/dc-schema http://www.loc.gov/z3950/agency/zing/srw/dc-schema.xsd">
16                                 <xsl:for-each select="marc:collection">
17                                         <xsl:for-each select="marc:record">
18                                                 <srw_dc:dc>
19                                                         <xsl:apply-templates select="."/>
20                                                 </srw_dc:dc>
21                                         </xsl:for-each>
22                                 </xsl:for-each>
23                         </srw_dc:dcCollection>
24                 </xsl:if>
25                 <xsl:if test="marc:record">
26
27                         <srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema" xsi:schemaLocation="info:srw/schema/1/dc-schema http://www.loc.gov/z3950/agency/zing/srw/dc-schema.xsd">
28                                 <xsl:apply-templates select="marc:record"/>
29                         </srw_dc:dc>
30                 </xsl:if>
31         </xsl:template>
32
33         <xsl:template match="marc:record">
34
35                 <xsl:variable name="leader" select="marc:leader"/>
36                 <xsl:variable name="leader6" select="substring($leader,7,1)"/>
37                 <xsl:variable name="leader7" select="substring($leader,8,1)"/>
38                 <xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
39
40                 <xsl:for-each select="marc:datafield[@tag=245]">
41                         <title>
42                                 <xsl:call-template name="subfieldSelect">
43                                         <xsl:with-param name="codes">abfghk</xsl:with-param>
44                                 </xsl:call-template>
45                         </title>
46                 </xsl:for-each>
47
48                 <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]">
49                         <creator>
50                                 <xsl:value-of select="normalize-space(.)"/>
51                         </creator>
52                 </xsl:for-each>
53
54                 <type>
55                         <xsl:if test="$leader7='c'">
56                                 <!-- nt fix 1/04 -->
57                                 <!--<xsl:attribute name="collection">yes</xsl:attribute>-->
58                                 <xsl:text>collection</xsl:text>
59                         </xsl:if>
60
61                         <xsl:if test="$leader6='d' or $leader6='f' or $leader6='p' or $leader6='t'">
62                                 <!-- nt fix 1/04 -->
63                                 <!--<xsl:attribute name="manuscript">yes</xsl:attribute> -->
64                                 <xsl:text>manuscript</xsl:text>
65                         </xsl:if>
66
67                         <xsl:choose>
68                                 <xsl:when test="$leader6='a' or $leader6='t'">text</xsl:when>
69                                 <xsl:when test="$leader6='e' or $leader6='f'">cartographic</xsl:when>
70                                 <xsl:when test="$leader6='c' or $leader6='d'">notated music</xsl:when>
71                                 <xsl:when test="$leader6='i' or $leader6='j'">sound recording</xsl:when>
72                                 <xsl:when test="$leader6='k'">still image</xsl:when>
73                                 <xsl:when test="$leader6='g'">moving image</xsl:when>
74                                 <xsl:when test="$leader6='r'">three dimensional object</xsl:when>
75                                 <xsl:when test="$leader6='m'">software, multimedia</xsl:when>
76                                 <xsl:when test="$leader6='p'">mixed material</xsl:when>
77                         </xsl:choose>
78                 </type>
79
80                 <xsl:for-each select="marc:datafield[@tag=655]">
81                         <type>
82                                 <xsl:value-of select="normalize-space(.)"/>
83                         </type>
84                 </xsl:for-each>
85
86                 <xsl:for-each select="marc:datafield[@tag=260]">
87                         <publisher>
88                                 <xsl:call-template name="subfieldSelect">
89                                         <xsl:with-param name="codes">ab</xsl:with-param>
90                                 </xsl:call-template>
91                         </publisher>
92                 </xsl:for-each>
93
94                 <xsl:for-each select="marc:datafield[@tag=260]/marc:subfield[@code='c']">
95                         <date>
96                                 <xsl:value-of select="."/>
97                         </date>
98                 </xsl:for-each>
99
100                 <language>
101                         <xsl:value-of select="substring($controlField008,36,3)"/>
102                 </language>
103
104                 <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
105                         <format>
106                                 <xsl:value-of select="."/>
107                         </format>
108                 </xsl:for-each>
109
110                 <xsl:for-each select="marc:datafield[@tag=520]">
111                         <description>
112                                 <!-- nt fix 01/04 -->
113                                 <xsl:value-of select="normalize-space(marc:subfield[@code='a'])"/>
114                         </description>
115                 </xsl:for-each>
116
117                 <xsl:for-each select="marc:datafield[@tag=521]">
118                         <description>
119                                 <xsl:value-of select="marc:subfield[@code='a']"/>
120                         </description>
121                 </xsl:for-each>
122
123                 <xsl:for-each select="marc:datafield[500&lt;@tag][@tag&lt;=599][not(@tag=506 or @tag=530 or @tag=540 or @tag=546)]">
124                         <description>
125                                 <xsl:value-of select="marc:subfield[@code='a']"/>
126                         </description>
127                 </xsl:for-each>
128
129                 <xsl:for-each select="marc:datafield[@tag=600]">
130                         <subject>
131                                 <xsl:call-template name="subfieldSelect">
132                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
133                                 </xsl:call-template>
134                         </subject>
135                 </xsl:for-each>
136
137                 <xsl:for-each select="marc:datafield[@tag=610]">
138                         <subject>
139                                 <xsl:call-template name="subfieldSelect">
140                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
141                                 </xsl:call-template>
142                         </subject>
143                 </xsl:for-each>
144
145                 <xsl:for-each select="marc:datafield[@tag=611]">
146                         <subject>
147                                 <xsl:call-template name="subfieldSelect">
148                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
149                                 </xsl:call-template>
150                         </subject>
151                 </xsl:for-each>
152
153                 <xsl:for-each select="marc:datafield[@tag=630]">
154                         <subject>
155                                 <xsl:call-template name="subfieldSelect">
156                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
157                                 </xsl:call-template>
158                         </subject>
159                 </xsl:for-each>
160
161                 <xsl:for-each select="marc:datafield[@tag=650]">
162                         <subject>
163                                 <xsl:call-template name="subfieldSelect">
164                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
165                                 </xsl:call-template>
166                         </subject>
167                 </xsl:for-each>
168
169                 <xsl:for-each select="marc:datafield[@tag=653]">
170                         <subject>
171                                 <xsl:call-template name="subfieldSelect">
172                                         <xsl:with-param name="codes">abcdq</xsl:with-param>
173                                 </xsl:call-template>
174                         </subject>
175                 </xsl:for-each>
176
177                 <xsl:for-each select="marc:datafield[@tag=752]">
178                         <coverage>
179                                 <xsl:call-template name="subfieldSelect">
180                                         <xsl:with-param name="codes">abcd</xsl:with-param>
181                                 </xsl:call-template>
182                         </coverage>
183                 </xsl:for-each>
184
185                 <xsl:for-each select="marc:datafield[@tag=530]">
186                         <!-- nt 01/04 attribute fix -->
187                         <relation>
188                                 <!--<xsl:attribute name="type">original</xsl:attribute>-->
189                                 <xsl:call-template name="subfieldSelect">
190                                         <xsl:with-param name="codes">abcdu</xsl:with-param>
191                                 </xsl:call-template>
192                         </relation>
193                 </xsl:for-each>
194
195                 <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]">
196                         <relation>
197                                 <xsl:call-template name="subfieldSelect">
198                                         <xsl:with-param name="codes">ot</xsl:with-param>
199                                 </xsl:call-template>
200                         </relation>
201                 </xsl:for-each>
202
203                 <xsl:for-each select="marc:datafield[@tag=856]">
204                         <identifier>
205                                 <xsl:value-of select="marc:subfield[@code='u']"/>
206                         </identifier>
207                 </xsl:for-each>
208
209                 <xsl:for-each select="marc:datafield[@tag=020]">
210                         <identifier>
211                                 <xsl:text>URN:ISBN:</xsl:text>
212                                 <xsl:value-of select="marc:subfield[@code='a']"/>
213                         </identifier>
214                 </xsl:for-each>
215
216
217                 <xsl:for-each select="marc:datafield[@tag=506]">
218                         <rights>
219                                 <xsl:value-of select="marc:subfield[@code='a']"/>
220                         </rights>
221                 </xsl:for-each>
222
223                 <xsl:for-each select="marc:datafield[@tag=540]">
224                         <rights>
225                                 <xsl:value-of select="marc:subfield[@code='a']"/>
226                         </rights>
227                 </xsl:for-each>
228         </xsl:template>
229 </xsl:stylesheet>