Call autoheader when needed
[pazpar2-moved-to-github.git] / etc / unimarc.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet
3     version="1.0"
4     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5     xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
6     xmlns:marc="http://www.loc.gov/MARC21/slim">
7
8  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
9
10
11   <xsl:template match="/marc:record">
12     <pz:record>
13
14       <xsl:attribute name="mergekey">
15         <xsl:text>title </xsl:text>
16         <xsl:value-of 
17             select="marc:datafield[@tag='200']/marc:subfield[@code='a']"/>
18         <xsl:text> author </xsl:text>
19         <xsl:value-of 
20             select="marc:datafield[@tag='700']/marc:subfield[@code='a']"/>
21         <xsl:text> </xsl:text>
22         <xsl:value-of 
23             select="marc:datafield[@tag='700']/marc:subfield[@code='b']"/>
24       </xsl:attribute>
25
26
27       <xsl:for-each select="marc:controlfield[@tag='001']">
28         <pz:metadata type="id">
29           <xsl:value-of select="."/>
30         </pz:metadata>
31       </xsl:for-each>
32
33       <!-- -->
34       <xsl:for-each select="marc:datafield[@tag='020']">
35         <xsl:if test="marc:subfield[@code='a'] = 'US'">
36           <pz:metadata type="lccn">
37             <xsl:value-of select="marc:subfield[@code='b']"/>
38           </pz:metadata>
39         </xsl:if>
40       </xsl:for-each>
41
42       <xsl:for-each select="marc:datafield[@tag='010']">
43         <pz:metadata type="isbn">
44           <xsl:value-of select="marc:subfield[@code='a']"/>
45         </pz:metadata>
46       </xsl:for-each>
47
48       <xsl:for-each select="marc:datafield[@tag='011']">
49         <pz:metadata type="issn">
50           <xsl:value-of select="marc:subfield[@code='a']"/>
51         </pz:metadata>
52       </xsl:for-each>
53
54
55       <xsl:for-each select="marc:datafield[@tag='200']">
56         <pz:metadata type="title">
57           <xsl:value-of select="marc:subfield[@code='a']"/>
58         </pz:metadata>
59       </xsl:for-each>
60
61
62       <!-- Date of Pulbication -->
63       <xsl:for-each select="marc:datafield[@tag='210']">
64         <pz:metadata type="date">
65           <xsl:value-of select="marc:subfield[@code='d']"/>
66         </pz:metadata>
67       </xsl:for-each>
68
69       <!--  Usmarc 650 maps to unimarc 606 and marc21 653 maps to unimarc 610 -->
70       <xsl:for-each select="marc:datafield[@tag='606' or @tag='610']">
71         <pz:metadata type="subject">
72           <xsl:value-of select="marc:subfield[@code='a']"/>
73         </pz:metadata>
74       </xsl:for-each>
75
76       <xsl:for-each select="marc:datafield[@tag &gt;= 300 and @tag &lt;= 345]
77                             [@tag != '325']">
78         <pz:metadata type="description">
79             <xsl:value-of select="*/text()"/>
80         </pz:metadata>
81       </xsl:for-each>
82
83
84       <!-- Author : primary, alternative and secondary responsibility (equivalent marc21 tags : 100, 700 -->
85       <xsl:for-each select="marc:datafield[@tag='700' or @tag='701' or @tag='702']">
86         <pz:metadata type="author">
87           <xsl:value-of select="marc:subfield[@code='a']"/>
88           <xsl:text>, </xsl:text>
89           <xsl:value-of select="marc:subfield[@code='b']"/>
90         </pz:metadata>
91       </xsl:for-each>
92
93       <!-- Author : marc21 tag 720 maps to unimarc 730
94       <xsl:for-each select="marc:datafield[@tag='730']">
95         <pz:metadata type="author">
96           <xsl:value-of select="marc:subfield[@code='a']"/>
97         </pz:metadata>
98       </xsl:for-each>
99       -->
100
101       <!-- -->
102       <xsl:for-each select="marc:datafield[@tag='856']">
103         <pz:metadata type="url">
104           <xsl:value-of select="marc:subfield[@code='u']"/>
105         </pz:metadata>
106       </xsl:for-each>
107
108     </pz:record>
109   </xsl:template>
110
111 </xsl:stylesheet>