42ae103b1c6ad3143b45246a5c20d169676531aa
[pazpar2-moved-to-github.git] / etc / tmarcxml.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
4         xmlns:tmarc="http://www.indexdata.com/MARC21/turboxml">
5
6         <xsl:output indent="yes" method="xml" version="1.0"
7                 encoding="UTF-8" />
8
9         <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
10                 http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
11         <xsl:template name="record-hook" />
12
13
14         <xsl:template match="/">
15                         <xsl:apply-templates />
16         </xsl:template>
17
18         <xsl:template match="tmarc:r">
19                 <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
20                 <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
21                 <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
22                 <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
23                 <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
24                 <!-- Does not always hit the right substring. The field is not always fixed-width? -->
25                 <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
26                 <xsl:variable name="contains110" select="tmarc:d110" />
27                 <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
28
29                 <xsl:variable name="medium">
30                         <xsl:choose>
31                                 <xsl:when test="$title_medium">
32                                         <xsl:value-of select="translate($title_medium, ' []/', '')" />
33                                 </xsl:when>
34                                 <xsl:when test="$fulltext_a">
35                                         <xsl:text>electronic resource</xsl:text>
36                                 </xsl:when>
37                                 <xsl:when test="$fulltext_b">
38                                         <xsl:text>electronic resource</xsl:text>
39                                 </xsl:when>
40                                 <xsl:when test="$journal_title">
41                                         <xsl:text>article</xsl:text>
42                                 </xsl:when>
43                                 <xsl:otherwise>
44                                         <xsl:text>book</xsl:text>
45                                 </xsl:otherwise>
46                         </xsl:choose>
47                 </xsl:variable>
48
49                 <pz:record>
50 <!--
51                         <xsl:attribute name="mergekey">
52         <xsl:text>title </xsl:text>
53         <xsl:value-of select="tmarc:d245/tmarc:sa" />
54         <xsl:text> author </xsl:text>
55         <xsl:value-of select="tmarc:d100/tmarc:sa" />
56         <xsl:text> medium </xsl:text>
57         <xsl:value-of select="$medium" />
58       </xsl:attribute>
59   -->
60
61                         <xsl:for-each select="tmarc:c001">
62                                 <pz:metadata type="id">
63                                         <xsl:value-of select="." />
64                                 </pz:metadata>
65                         </xsl:for-each>
66
67                         <xsl:for-each select="tmarc:d010">
68                                 <pz:metadata type="lccn">
69                                         <xsl:value-of select="tmarc:sa" />
70                                 </pz:metadata>
71                         </xsl:for-each>
72
73                         <xsl:for-each select="tmarc:d020">
74                                 <pz:metadata type="isbn">
75                                         <xsl:value-of select="tmarc:sa" />
76                                 </pz:metadata>
77                         </xsl:for-each>
78
79                         <xsl:for-each select="tmarc:d022">
80                                 <pz:metadata type="issn">
81                                         <xsl:value-of select="tmarc:sa" />
82                                 </pz:metadata>
83                         </xsl:for-each>
84
85                         <xsl:for-each select="tmarc:d027">
86                                 <pz:metadata type="tech-rep-nr">
87                                         <xsl:value-of select="tmarc:sa" />
88                                 </pz:metadata>
89                         </xsl:for-each>
90
91                         <xsl:for-each select="tmarc:d035">
92                                 <pz:metadata type="system-control-nr">
93                                         <xsl:value-of select="tmarc:sa" />
94                                 </pz:metadata>
95                         </xsl:for-each>
96
97                         <xsl:for-each select="tmarc:d100">
98                                 <pz:metadata type="author">
99                                         <xsl:value-of select="tmarc:sa" />
100                                 </pz:metadata>
101                                 <pz:metadata type="author-title">
102                                         <xsl:value-of select="tmarc:sc" />
103                                 </pz:metadata>
104                                 <pz:metadata type="author-date">
105                                         <xsl:value-of select="tmarc:sd" />
106                                 </pz:metadata>
107                         </xsl:for-each>
108
109                         <xsl:for-each select="tmarc:d110">
110                                 <pz:metadata type="corporate-name">
111                                         <xsl:value-of select="tmarc:sa" />
112                                 </pz:metadata>
113                                 <pz:metadata type="corporate-location">
114                                         <xsl:value-of select="tmarc:sc" />
115                                 </pz:metadata>
116                                 <pz:metadata type="corporate-date">
117                                         <xsl:value-of select="tmarc:sd" />
118                                 </pz:metadata>
119                         </xsl:for-each>
120
121                         <xsl:for-each select="tmarc:d111">
122                                 <pz:metadata type="meeting-name">
123                                         <xsl:value-of select="tmarc:sa" />
124                                 </pz:metadata>
125                                 <pz:metadata type="meeting-location">
126                                         <xsl:value-of select="tmarc:sc" />
127                                 </pz:metadata>
128                                 <pz:metadata type="meeting-date">
129                                         <xsl:value-of select="tmarc:sd" />
130                                 </pz:metadata>
131                         </xsl:for-each>
132
133                         <xsl:for-each select="tmarc:d260">
134                                 <pz:metadata type="date">
135                                         <xsl:value-of select="tmarc:sc" />
136                                 </pz:metadata>
137                         </xsl:for-each>
138
139                         <xsl:for-each select="tmarc:d130">
140                                 <pz:metadata type="title-uniform">
141                                         <xsl:value-of select="tmarc:sa" />
142                                 </pz:metadata>
143                                 <pz:metadata type="title-uniform-media">
144                                         <xsl:value-of select="tmarc:sm" />
145                                 </pz:metadata>
146                                 <pz:metadata type="title-uniform-parts">
147                                         <xsl:value-of select="tmarc:sn" />
148                                 </pz:metadata>
149                                 <pz:metadata type="title-uniform-partname">
150                                         <xsl:value-of select="tmarc:sp" />
151                                 </pz:metadata>
152                                 <pz:metadata type="title-uniform-key">
153                                         <xsl:value-of select="tmarc:sr" />
154                                 </pz:metadata>
155                         </xsl:for-each>
156
157                         <xsl:for-each select="tmarc:d245">
158                                 <pz:metadata type="title">
159                                         <xsl:value-of select="tmarc:sa" />
160                                 </pz:metadata>
161                                 <pz:metadata type="title-remainder">
162                                         <xsl:value-of select="tmarc:sb" />
163                                 </pz:metadata>
164                                 <pz:metadata type="title-responsibility">
165                                         <xsl:value-of select="tmarc:sc" />
166                                 </pz:metadata>
167                                 <pz:metadata type="title-dates">
168                                         <xsl:value-of select="tmarc:sf" />
169                                 </pz:metadata>
170                                 <pz:metadata type="title-medium">
171                                         <xsl:value-of select="tmarc:sh" />
172                                 </pz:metadata>
173                                 <pz:metadata type="title-number-section">
174                                         <xsl:value-of select="tmarc:sn" />
175                                 </pz:metadata>
176                         </xsl:for-each>
177
178                         <xsl:for-each select="tmarc:d250">
179                                 <pz:metadata type="edition">
180                                         <xsl:value-of select="tmarc:sa" />
181                                 </pz:metadata>
182                         </xsl:for-each>
183
184                         <xsl:for-each select="tmarc:d260">
185                                 <pz:metadata type="publication-place">
186                                         <xsl:value-of select="tmarc:sa" />
187                                 </pz:metadata>
188                                 <pz:metadata type="publication-name">
189                                         <xsl:value-of select="tmarc:sb" />
190                                 </pz:metadata>
191                                 <pz:metadata type="publication-date">
192                                         <xsl:value-of select="tmarc:sc" />
193                                 </pz:metadata>
194                         </xsl:for-each>
195
196                         <xsl:for-each select="tmarc:d300">
197                                 <pz:metadata type="physical-extent">
198                                         <xsl:value-of select="tmarc:sa" />
199                                 </pz:metadata>
200                                 <pz:metadata type="physical-format">
201                                         <xsl:value-of select="tmarc:sb" />
202                                 </pz:metadata>
203                                 <pz:metadata type="physical-dimensions">
204                                         <xsl:value-of select="tmarc:sc" />
205                                 </pz:metadata>
206                                 <pz:metadata type="physical-accomp">
207                                         <xsl:value-of select="tmarc:se" />
208                                 </pz:metadata>
209                                 <pz:metadata type="physical-unittype">
210                                         <xsl:value-of select="tmarc:sf" />
211                                 </pz:metadata>
212                                 <pz:metadata type="physical-unitsize">
213                                         <xsl:value-of select="tmarc:sg" />
214                                 </pz:metadata>
215                                 <pz:metadata type="physical-specified">
216                                         <xsl:value-of select="tmarc:s3" />
217                                 </pz:metadata>
218                         </xsl:for-each>
219
220                         <xsl:for-each select="tmarc:d440">
221                                 <pz:metadata type="series-title">
222                                         <xsl:value-of select="tmarc:sa" />
223                                 </pz:metadata>
224                         </xsl:for-each>
225
226                         <xsl:for-each select="tmarc:d500">
227                                 <pz:metadata type="description">
228                                         <xsl:for-each select="node()">
229                                                 <xsl:value-of select="text()" />
230                                         </xsl:for-each>
231                                 </pz:metadata>
232                         </xsl:for-each>
233
234                         <xsl:for-each select="tmarc:d505">
235                                 <pz:metadata type="description">
236                                         <xsl:for-each select="node()">
237                                                 <xsl:value-of select="text()" />
238                                         </xsl:for-each>
239                                 </pz:metadata>
240                         </xsl:for-each>
241
242                         <xsl:for-each select="tmarc:d518">
243                                 <pz:metadata type="description">
244                                         <xsl:for-each select="node()">
245                                                 <xsl:value-of select="text()" />
246                                         </xsl:for-each>
247                                 </pz:metadata>
248                         </xsl:for-each>
249
250                         <xsl:for-each select="tmarc:d520">
251                                 <pz:metadata type="description">
252                                         <xsl:for-each select="node()">
253                                                 <xsl:value-of select="text()" />
254                                         </xsl:for-each>
255                                 </pz:metadata>
256                         </xsl:for-each>
257
258                         <xsl:for-each select="tmarc:d522">
259                                 <pz:metadata type="description">
260                                         <xsl:for-each select="node()">
261                                                 <xsl:value-of select="text()" />
262                                         </xsl:for-each>
263                                 </pz:metadata>
264                         </xsl:for-each>
265
266                         <xsl:for-each select="tmarc:d600">
267                                 <pz:metadata type="subject">
268                                         <xsl:value-of select="tmarc:sa" />
269                                 </pz:metadata>
270                                 <pz:metadata type="subject-long">
271                                         <xsl:for-each select="node()/text()">
272                                                 <xsl:if test="position() > 1">
273                                                         <xsl:text>, </xsl:text>
274                                                 </xsl:if>
275                                                 <xsl:value-of select="." />
276                                         </xsl:for-each>
277                                 </pz:metadata>
278                         </xsl:for-each>
279
280                         <xsl:for-each select="tmarc:d610">
281                                 <pz:metadata type="subject">
282                                         <xsl:value-of select="tmarc:sa" />
283                                 </pz:metadata>
284                                 <pz:metadata type="subject-long">
285                                         <xsl:for-each select="node()/text()">
286                                                 <xsl:if test="position() > 1">
287                                                         <xsl:text>, </xsl:text>
288                                                 </xsl:if>
289                                                 <xsl:value-of select="." />
290                                         </xsl:for-each>
291                                 </pz:metadata>
292                         </xsl:for-each>
293
294                         <xsl:for-each select="tmarc:d611">
295                                 <pz:metadata type="subject">
296                                         <xsl:value-of select="tmarc:sa" />
297                                 </pz:metadata>
298                                 <pz:metadata type="subject-long">
299                                         <xsl:for-each select="node()/text()">
300                                                 <xsl:if test="position() > 1">
301                                                         <xsl:text>, </xsl:text>
302                                                 </xsl:if>
303                                                 <xsl:value-of select="." />
304                                         </xsl:for-each>
305                                 </pz:metadata>
306                         </xsl:for-each>
307
308                         <xsl:for-each select="tmarc:d630">
309                                 <pz:metadata type="subject">
310                                         <xsl:value-of select="tmarc:sa" />
311                                 </pz:metadata>
312                                 <pz:metadata type="subject-long">
313                                         <xsl:for-each select="node()/text()">
314                                                 <xsl:if test="position() > 1">
315                                                         <xsl:text>, </xsl:text>
316                                                 </xsl:if>
317                                                 <xsl:value-of select="." />
318                                         </xsl:for-each>
319                                 </pz:metadata>
320                         </xsl:for-each>
321
322                         <xsl:for-each select="tmarc:d648">
323                                 <pz:metadata type="subject">
324                                         <xsl:value-of select="tmarc:sa" />
325                                 </pz:metadata>
326                                 <pz:metadata type="subject-long">
327                                         <xsl:for-each select="node()/text()">
328                                                 <xsl:if test="position() > 1">
329                                                         <xsl:text>, </xsl:text>
330                                                 </xsl:if>
331                                                 <xsl:value-of select="." />
332                                         </xsl:for-each>
333                                 </pz:metadata>
334                         </xsl:for-each>
335
336                         <xsl:for-each select="tmarc:d650">
337                                 <pz:metadata type="subject">
338                                         <xsl:value-of select="tmarc:sa" />
339                                 </pz:metadata>
340                                 <pz:metadata type="subject-long">
341                                         <xsl:for-each select="node()/text()">
342                                                 <xsl:if test="position() > 1">
343                                                         <xsl:text>, </xsl:text>
344                                                 </xsl:if>
345                                                 <xsl:value-of select="." />
346                                         </xsl:for-each>
347                                 </pz:metadata>
348                         </xsl:for-each>
349
350                         <xsl:for-each select="tmarc:d651">
351                                 <pz:metadata type="subject">
352                                         <xsl:value-of select="tmarc:sa" />
353                                 </pz:metadata>
354                                 <pz:metadata type="subject-long">
355                                         <xsl:for-each select="node()/text()">
356                                                 <xsl:if test="position() > 1">
357                                                         <xsl:text>, </xsl:text>
358                                                 </xsl:if>
359                                                 <xsl:value-of select="." />
360                                         </xsl:for-each>
361                                 </pz:metadata>
362                         </xsl:for-each>
363
364                         <xsl:for-each select="tmarc:d653">
365                                 <pz:metadata type="subject">
366                                         <xsl:value-of select="tmarc:sa" />
367                                 </pz:metadata>
368                                 <pz:metadata type="subject-long">
369                                         <xsl:for-each select="node()/text()">
370                                                 <xsl:if test="position() > 1">
371                                                         <xsl:text>, </xsl:text>
372                                                 </xsl:if>
373                                                 <xsl:value-of select="." />
374                                         </xsl:for-each>
375                                 </pz:metadata>
376                         </xsl:for-each>
377
378                         <xsl:for-each select="tmarc:d654">
379                                 <pz:metadata type="subject">
380                                         <xsl:value-of select="tmarc:sa" />
381                                 </pz:metadata>
382                                 <pz:metadata type="subject-long">
383                                         <xsl:for-each select="node()/text()">
384                                                 <xsl:if test="position() > 1">
385                                                         <xsl:text>, </xsl:text>
386                                                 </xsl:if>
387                                                 <xsl:value-of select="." />
388                                         </xsl:for-each>
389                                 </pz:metadata>
390                         </xsl:for-each>
391
392                         <xsl:for-each select="tmarc:d655">
393                                 <pz:metadata type="subject">
394                                         <xsl:value-of select="tmarc:sa" />
395                                 </pz:metadata>
396                                 <pz:metadata type="subject-long">
397                                         <xsl:for-each select="node()/text()">
398                                                 <xsl:if test="position() > 1">
399                                                         <xsl:text>, </xsl:text>
400                                                 </xsl:if>
401                                                 <xsl:value-of select="." />
402                                         </xsl:for-each>
403                                 </pz:metadata>
404                         </xsl:for-each>
405
406                         <xsl:for-each select="tmarc:d656">
407                                 <pz:metadata type="subject">
408                                         <xsl:value-of select="tmarc:sa" />
409                                 </pz:metadata>
410                                 <pz:metadata type="subject-long">
411                                         <xsl:for-each select="node()/text()">
412                                                 <xsl:if test="position() > 1">
413                                                         <xsl:text>, </xsl:text>
414                                                 </xsl:if>
415                                                 <xsl:value-of select="." />
416                                         </xsl:for-each>
417                                 </pz:metadata>
418                         </xsl:for-each>
419
420                         <xsl:for-each select="tmarc:d657">
421                                 <pz:metadata type="subject">
422                                         <xsl:value-of select="tmarc:sa" />
423                                 </pz:metadata>
424                                 <pz:metadata type="subject-long">
425                                         <xsl:for-each select="node()/text()">
426                                                 <xsl:if test="position() > 1">
427                                                         <xsl:text>, </xsl:text>
428                                                 </xsl:if>
429                                                 <xsl:value-of select="." />
430                                         </xsl:for-each>
431                                 </pz:metadata>
432                         </xsl:for-each>
433
434                         <xsl:for-each select="tmarc:d658">
435                                 <pz:metadata type="subject">
436                                         <xsl:value-of select="tmarc:sa" />
437                                 </pz:metadata>
438                                 <pz:metadata type="subject-long">
439                                         <xsl:for-each select="node()/text()">
440                                                 <xsl:if test="position() > 1">
441                                                         <xsl:text>, </xsl:text>
442                                                 </xsl:if>
443                                                 <xsl:value-of select="." />
444                                         </xsl:for-each>
445                                 </pz:metadata>
446                         </xsl:for-each>
447
448                         <xsl:for-each select="tmarc:d662">
449                                 <pz:metadata type="subject">
450                                         <xsl:value-of select="tmarc:sa" />
451                                 </pz:metadata>
452                                 <pz:metadata type="subject-long">
453                                         <xsl:for-each select="node()/text()">
454                                                 <xsl:if test="position() > 1">
455                                                         <xsl:text>, </xsl:text>
456                                                 </xsl:if>
457                                                 <xsl:value-of select="." />
458                                         </xsl:for-each>
459                                 </pz:metadata>
460                         </xsl:for-each>
461
462                         <xsl:for-each select="tmarc:d69X">
463                                 <pz:metadata type="subject">
464                                         <xsl:value-of select="tmarc:sa" />
465                                 </pz:metadata>
466                                 <pz:metadata type="subject-long">
467                                         <xsl:for-each select="node()/text()">
468                                                 <xsl:if test="position() > 1">
469                                                         <xsl:text>, </xsl:text>
470                                                 </xsl:if>
471                                                 <xsl:value-of select="." />
472                                         </xsl:for-each>
473                                 </pz:metadata>
474                         </xsl:for-each>
475
476                         <!-- or tmarc:d651 or tmarc:d653 or tmarc:d654 or tmarc:d655 or tmarc:d656 
477                                 or tmarc:d657 or tmarc:d658 or tmarc:d662 or tmarc:d69X"> -->
478
479                         <!-- <xsl:for-each select="tmarc:d600" > <pz:metadata type="subject"> 
480                                 <xsl:value-of select="tmarc:sa"/> </pz:metadata> <pz:metadata type="subject-long"> 
481                                 <xsl:for-each select="tmarc:sa tmarc:sb tmarc:sc tmarc:sd "> <xsl:if test="position() 
482                                 > 1"> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> 
483                                 </pz:metadata> </xsl:for-each> -->
484
485                         <xsl:for-each select="tmarc:d856">
486                                 <pz:metadata type="electronic-url">
487                                         <xsl:value-of select="tmarc:su" />
488                                 </pz:metadata>
489                                 <pz:metadata type="electronic-text">
490                                         <xsl:if test="tmarc:sy">
491                                                 <xsl:value-of select="tmarc:sy/text()" />
492                                         </xsl:if>
493                                         <xsl:if test="tmarc:s3">
494                                                 <xsl:value-of select="tmarc:s3/text()" />
495                                         </xsl:if>
496                                 </pz:metadata>
497                                 <pz:metadata type="electronic-note">
498                                         <xsl:value-of select="tmarc:sz" />
499                                 </pz:metadata>
500                                 <pz:metadata type="electronic-format-instruction">
501                                         <xsl:value-of select="tmarc:si" />
502                                 </pz:metadata>
503                                 <pz:metadata type="electronic-format-type">
504                                         <xsl:value-of select="tmarc:sq" />
505                                 </pz:metadata>
506                         </xsl:for-each>
507
508                         <xsl:for-each select="tmarc:d773">
509                                 <pz:metadata type="citation">
510                                         <xsl:for-each select="*">
511                                                 <xsl:value-of select="normalize-space(.)" />
512                                                 <xsl:text> </xsl:text>
513                                         </xsl:for-each>
514                                 </pz:metadata>
515                         </xsl:for-each>
516
517                         <xsl:for-each select="tmarc:d852">
518                                 <xsl:if test="tmarc:sy">
519                                         <pz:metadata type="publicnote">
520                                                 <xsl:value-of select="tmarc:sy" />
521                                         </pz:metadata>
522                                 </xsl:if>
523                                 <xsl:if test="tmarc:sh">
524                                         <pz:metadata type="callnumber">
525                                                 <xsl:value-of select="tmarc:sh" />
526                                         </pz:metadata>
527                                 </xsl:if>
528                         </xsl:for-each>
529
530                         <pz:metadata type="medium">
531                                 <xsl:value-of select="$medium" />
532                         </pz:metadata>
533
534                         <xsl:for-each select="tmarc:d900/tmarc:sa">
535                                 <pz:metadata type="fulltext">
536                                         <xsl:value-of select="." />
537                                 </pz:metadata>
538                         </xsl:for-each>
539
540                         <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
541                                 select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
542
543                         <xsl:for-each select="tmarc:d900/tmarc:sb">
544                                 <pz:metadata type="fulltext">
545                                         <xsl:value-of select="." />
546                                 </pz:metadata>
547                         </xsl:for-each>
548
549                         <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
550                                 select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
551
552                         <xsl:for-each select="tmarc:d907">
553                                 <!-- or tmarc:d901"> -->
554                                 <pz:metadata type="iii-id">
555                                         <xsl:value-of select="tmarc:sa" />
556                                 </pz:metadata>
557                         </xsl:for-each>
558
559                         <xsl:for-each select="tmarc:d926">
560                                 <pz:metadata type="holding">
561                                         <xsl:for-each select="tmarc:s">
562                                                 <xsl:if test="position() > 1">
563                                                         <xsl:text> </xsl:text>
564                                                 </xsl:if>
565                                                 <xsl:value-of select="." />
566                                         </xsl:for-each>
567                                 </pz:metadata>
568                         </xsl:for-each>
569
570                         <xsl:for-each select="tmarc:d948">
571                                 <pz:metadata type="holding">
572                                         <xsl:for-each select="tmarc:s">
573                                                 <xsl:if test="position() > 1">
574                                                         <xsl:text> </xsl:text>
575                                                 </xsl:if>
576                                                 <xsl:value-of select="." />
577                                         </xsl:for-each>
578                                 </pz:metadata>
579                         </xsl:for-each>
580
581                         <xsl:for-each select="tmarc:d991">
582                                 <pz:metadata type="holding">
583                                         <xsl:for-each select="tmarc:s">
584                                                 <xsl:if test="position() > 1">
585                                                         <xsl:text> </xsl:text>
586                                                 </xsl:if>
587                                                 <xsl:value-of select="." />
588                                         </xsl:for-each>
589                                 </pz:metadata>
590                         </xsl:for-each>
591
592                         <pz:metadata tag="tag100">
593                                 <xsl:call-template name="shortTitle">
594                                         <xsl:with-param name="tag" select="100" />
595                                 </xsl:call-template>
596                         </pz:metadata>
597
598                         <!-- Stuff for FRBR workset key -->
599                         <xsl:variable name="title130">
600                                 <xsl:for-each select="tmarc:d130">
601                                         <xsl:value-of select="tmarc:sa" />
602                                         <xsl:value-of select="tmarc:sm" />
603                                         <xsl:value-of select="tmarc:sn" />
604                                         <xsl:value-of select="tmarc:sp" />
605                                         <xsl:value-of select="tmarc:sr" />
606                                 </xsl:for-each>
607                         </xsl:variable>
608
609                         <xsl:variable name="title240">
610                                 <xsl:for-each select="tmarc:d240">
611                                         <xsl:value-of select="tmarc:sa" />
612                                         <xsl:value-of select="tmarc:sm" />
613                                         <xsl:value-of select="tmarc:sn" />
614                                         <xsl:value-of select="tmarc:sp" />
615                                         <xsl:value-of select="tmarc:sr" />
616                                 </xsl:for-each>
617                         </xsl:variable>
618                         <xsl:variable name="title242">
619                                 <xsl:for-each select="tmarc:d242">
620                                         <xsl:value-of select="tmarc:sa" />
621                                         <xsl:if test="$contains110 and not($hasAuthorFields)">
622                                                 <xsl:value-of select="tmarc:sb" />
623                                                 <xsl:value-of select="tmarc:sf" />
624                                                 <xsl:value-of select="tmarc:sg" />
625                                                 <xsl:value-of select="tmarc:sn" />
626                                                 <xsl:value-of select="tmarc:sp" />
627                                         </xsl:if>
628                                 </xsl:for-each>
629                         </xsl:variable>
630                         <xsl:variable name="title242-full">
631                                 <xsl:for-each select="tmarc:d242">
632                                         <xsl:value-of select="tmarc:sa" />
633                                         <xsl:value-of select="tmarc:sb" />
634                                         <xsl:value-of select="tmarc:sf" />
635                                         <xsl:value-of select="tmarc:sg" />
636                                         <xsl:value-of select="tmarc:sn" />
637                                         <xsl:value-of select="tmarc:sp" />
638                                 </xsl:for-each>
639                         </xsl:variable>
640
641                         <xsl:variable name="title245">
642                                 <xsl:for-each select="tmarc:d245">
643                                         <xsl:value-of select="tmarc:sa" />
644                                         <xsl:if test="$contains110 and not($hasAuthorFields)">
645                                                 <xsl:value-of select="tmarc:sb" />
646                                                 <xsl:value-of select="tmarc:sf" />
647                                                 <xsl:value-of select="tmarc:sg" />
648                                                 <xsl:value-of select="tmarc:sn" />
649                                                 <xsl:value-of select="tmarc:sp" />
650                                         </xsl:if>
651                                 </xsl:for-each>
652                         </xsl:variable>
653                         <xsl:variable name="title245-full">
654                                 <xsl:for-each select="tmarc:d245">
655                                         <xsl:value-of select="tmarc:sa" />
656                                         <xsl:value-of select="tmarc:sb" />
657                                         <xsl:value-of select="tmarc:sf" />
658                                         <xsl:value-of select="tmarc:sg" />
659                                         <xsl:value-of select="tmarc:sn" />
660                                         <xsl:value-of select="tmarc:sp" />
661                                 </xsl:for-each>
662                         </xsl:variable>
663
664                         <xsl:variable name="title246">
665                                 <xsl:for-each select="tmarc:d246">
666                                         <xsl:value-of select="tmarc:sa" />
667                                         <xsl:if test="$contains110 and not($hasAuthorFields)">
668                                                 <xsl:value-of select="tmarc:sb" />
669                                                 <xsl:value-of select="tmarc:sf" />
670                                                 <xsl:value-of select="tmarc:sg" />
671                                                 <xsl:value-of select="tmarc:sn" />
672                                                 <xsl:value-of select="tmarc:sp" />
673                                         </xsl:if>
674                                 </xsl:for-each>
675                         </xsl:variable>
676                         <xsl:variable name="title246-full">
677                                 <xsl:for-each select="tmarc:d246">
678                                         <xsl:value-of select="tmarc:sa" />
679                                         <xsl:value-of select="tmarc:sb" />
680                                         <xsl:value-of select="tmarc:sf" />
681                                         <xsl:value-of select="tmarc:sg" />
682                                         <xsl:value-of select="tmarc:sn" />
683                                         <xsl:value-of select="tmarc:sp" />
684                                 </xsl:for-each>
685                         </xsl:variable>
686
687                         <xsl:variable name="title247">
688                                 <xsl:for-each select="tmarc:d247">
689                                         <xsl:value-of select="tmarc:sa" />
690                                         <xsl:if test="$contains110 and not($hasAuthorFields)">
691                                                 <xsl:value-of select="tmarc:sb" />
692                                                 <xsl:value-of select="tmarc:sf" />
693                                                 <xsl:value-of select="tmarc:sg" />
694                                                 <xsl:value-of select="tmarc:sn" />
695                                                 <xsl:value-of select="tmarc:sp" />
696                                         </xsl:if>
697                                 </xsl:for-each>
698                         </xsl:variable>
699                         <xsl:variable name="title247-full">
700                                 <xsl:for-each select="tmarc:d247">
701                                         <xsl:value-of select="tmarc:sa" />
702                                         <xsl:value-of select="tmarc:sb" />
703                                         <xsl:value-of select="tmarc:sf" />
704                                         <xsl:value-of select="tmarc:sg" />
705                                         <xsl:value-of select="tmarc:sn" />
706                                         <xsl:value-of select="tmarc:sp" />
707                                 </xsl:for-each>
708                         </xsl:variable>
709
710                         <xsl:for-each select="tmarc:c008">
711                                 <pz:metadata type="meta-marc-cf008">
712                                         <xsl:value-of select="." />
713                                 </pz:metadata>
714                         </xsl:for-each>
715
716                         <pz:metadata type="meta-frbr-short-title">
717                                 <xsl:choose>
718                                         <xsl:when test="$title130!=''">
719                                                 <xsl:value-of select="$title130" />
720                                         </xsl:when>
721                                         <xsl:when test="$title130='' and $title240!=''">
722                                                 <xsl:value-of select="$title240" />
723                                         </xsl:when>
724                                         <!-- Missing the prioritization of 246 on non-english records -->
725                                         <xsl:when test="$title130='' and $title240='' and $title242!=''">
726                                                 <xsl:value-of select="$title242" />
727                                         </xsl:when>
728                                         <xsl:when
729                                                 test="$title130='' and $title240='' and $title242='' and $title245!=''">
730                                                 <xsl:value-of select="$title245" />
731                                         </xsl:when>
732                                         <xsl:when
733                                                 test="$title130='' and $title240='' and $title242='' and $title246!=''">
734                                                 <xsl:value-of select="$title246" />
735                                         </xsl:when>
736                                         <xsl:when
737                                                 test="$title130='' and $title240='' and $title242='' and $title246='' and $title247!=''">
738                                                 <xsl:value-of select="$title247" />
739                                         </xsl:when>
740                                 </xsl:choose>
741                         </pz:metadata>
742
743                         <pz:metadata type="meta-frbr-full-title">
744                                 <xsl:choose>
745                                         <xsl:when test="$title130!=''">
746                                                 <xsl:value-of select="$title130" />
747                                         </xsl:when>
748                                         <xsl:when test="$title130='' and $title240!=''">
749                                                 <xsl:value-of select="$title240" />
750                                         </xsl:when>
751                                         <!-- Missing the prioritization of 246 on non-english records -->
752                                         <xsl:when test="$title130='' and $title240='' and $title242!=''">
753                                                 <xsl:value-of select="$title242-full" />
754                                         </xsl:when>
755                                         <xsl:when
756                                                 test="$title130='' and $title240='' and $title242='' and $title245!=''">
757                                                 <xsl:value-of select="$title245-full" />
758                                         </xsl:when>
759                                         <xsl:when
760                                                 test="$title130='' and $title240='' and $title242='' and $title246!=''">
761                                                 <xsl:value-of select="$title246-full" />
762                                         </xsl:when>
763                                         <xsl:when
764                                                 test="$title130='' and $title240='' and $title242='' and $title246='' and $title247!=''">
765                                                 <xsl:value-of select="$title247-full" />
766                                         </xsl:when>
767                                 </xsl:choose>
768                         </pz:metadata>
769
770
771                         <pz:metadata type="meta-frbr-lang">
772                                 <xsl:value-of select="$control_lang" />
773                         </pz:metadata>
774
775
776                         <!-- passthrough id data -->
777                         <xsl:for-each select="pz:metadata">
778                                 <xsl:copy-of select="." />
779                         </xsl:for-each>
780
781                         <!-- other stylesheets importing this might want to define this -->
782                         <xsl:call-template name="record-hook" />
783
784                 </pz:record>
785         </xsl:template>
786
787         <xsl:template match="text()" />
788
789         <!-- TODO Does not work anymore -->
790         <xsl:template name="shortTitle">
791                 <xsl:param name="tag" />
792                 <xsl:for-each select="tmarc:d">
793                         <xsl:value-of select="tmarc:sa" />
794                         <xsl:value-of select="tmarc:sm" />
795                         <xsl:value-of select="tmarc:sn" />
796                         <xsl:value-of select="tmarc:sp" />
797                         <xsl:value-of select="tmarc:sr" />
798                 </xsl:for-each>
799         </xsl:template>
800
801         <!-- No working as expected -->
802         <xsl:template name="description">
803                 <xsl:param name="element" />
804                 <xsl:for-each select="$element">
805                         <pz:metadata type="description">
806                                 <xsl:for-each select="node()">
807                                         <xsl:value-of select="text()" />
808                                 </xsl:for-each>
809                         </pz:metadata>
810                 </xsl:for-each>
811                 <xsl:apply-templates />
812         </xsl:template>
813
814         <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
815                 <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
816                 </pz:metadata> </xsl:for-each> -->
817
818
819
820         <xsl:template name="subject">
821                 <xsl:param name="element" />
822                 <xsl:for-each select="$element">
823                         <pz:metadata type="subject">
824                                 <xsl:value-of select="tmarc:sa" />
825                         </pz:metadata>
826                         <pz:metadata type="subject-long">
827                                 <xsl:for-each select="node()/text()">
828                                         <xsl:if test="position() > 1">
829                                                 <xsl:text>, </xsl:text>
830                                         </xsl:if>
831                                         <xsl:value-of select="." />
832                                 </xsl:for-each>
833                         </pz:metadata>
834                 </xsl:for-each>
835         </xsl:template>
836
837
838 </xsl:stylesheet>