Merge commit 'origin/json-client'
[pazpar2-moved-to-github.git] / etc / tmarc.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/turbomarc">
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                         <!-- passthrough id data -->
599                         <xsl:for-each select="pz:metadata">
600                                 <xsl:copy-of select="." />
601                         </xsl:for-each>
602
603                         <!-- other stylesheets importing this might want to define this -->
604                         <xsl:call-template name="record-hook" />
605
606                 </pz:record>
607         </xsl:template>
608
609         <xsl:template match="text()" />
610
611         <!-- TODO Does not work anymore -->
612         <xsl:template name="shortTitle">
613                 <xsl:param name="tag" />
614                 <xsl:for-each select="tmarc:d">
615                         <xsl:value-of select="tmarc:sa" />
616                         <xsl:value-of select="tmarc:sm" />
617                         <xsl:value-of select="tmarc:sn" />
618                         <xsl:value-of select="tmarc:sp" />
619                         <xsl:value-of select="tmarc:sr" />
620                 </xsl:for-each>
621         </xsl:template>
622
623         <!-- No working as expected -->
624         <xsl:template name="description">
625                 <xsl:param name="element" />
626                 <xsl:for-each select="$element">
627                         <pz:metadata type="description">
628                                 <xsl:for-each select="node()">
629                                         <xsl:value-of select="text()" />
630                                 </xsl:for-each>
631                         </pz:metadata>
632                 </xsl:for-each>
633                 <xsl:apply-templates />
634         </xsl:template>
635
636         <!-- <xsl:for-each select="tmarc:d500"> <pz:metadata type="description"> 
637                 <xsl:for-each select="node()"> <xsl:value-of select="text()"/> </xsl:for-each> 
638                 </pz:metadata> </xsl:for-each> -->
639
640
641
642         <xsl:template name="subject">
643                 <xsl:param name="element" />
644                 <xsl:for-each select="$element">
645                         <pz:metadata type="subject">
646                                 <xsl:value-of select="tmarc:sa" />
647                         </pz:metadata>
648                         <pz:metadata type="subject-long">
649                                 <xsl:for-each select="node()/text()">
650                                         <xsl:if test="position() > 1">
651                                                 <xsl:text>, </xsl:text>
652                                         </xsl:if>
653                                         <xsl:value-of select="." />
654                                 </xsl:for-each>
655                         </pz:metadata>
656                 </xsl:for-each>
657         </xsl:template>
658
659
660 </xsl:stylesheet>