a6b6445eb9f1fea635cc19cfbc5caa8edceafa33
[pazpar2-moved-to-github.git] / etc / marc21.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:template match="/marc:record">
9     <pz:record>
10
11       <xsl:attribute name="mergekey">
12         <xsl:text>title </xsl:text>
13         <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
14         <xsl:text> author </xsl:text>
15         <xsl:value-of select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/>
16       </xsl:attribute>
17
18       <xsl:for-each select="marc:controlfield[@tag='001']">
19         <pz:metadata type="id">
20           <xsl:value-of select="."/>
21         </pz:metadata>
22       </xsl:for-each>
23
24       <xsl:for-each select="marc:datafield[@tag='010']">
25         <pz:metadata type="lccn">
26           <xsl:value-of select="marc:subfield[@code='a']"/>
27         </pz:metadata>
28       </xsl:for-each>
29
30       <xsl:for-each select="marc:datafield[@tag='245']">
31         <pz:metadata type="title">
32           <xsl:value-of select="marc:subfield[@code='a']"/>
33           <xsl:text> </xsl:text>
34           <xsl:value-of select="marc:subfield[@code='b']"/>
35         </pz:metadata>
36       </xsl:for-each>
37
38       <xsl:for-each select="marc:datafield[@tag='020']">
39         <pz:metadata type="isbn">
40           <xsl:value-of select="marc:subfield[@code='a']"/>
41         </pz:metadata>
42       </xsl:for-each>
43
44       <xsl:for-each select="marc:datafield[@tag='260']">
45         <pz:metadata type="date">
46           <xsl:value-of select="marc:subfield[@code='c']"/>
47         </pz:metadata>
48       </xsl:for-each>
49
50       <xsl:for-each select="marc:datafield[@tag='650' or @tag='653']">
51         <pz:metadata type="subject">
52           <xsl:value-of select="marc:subfield[@code='a']"/>
53         </pz:metadata>
54       </xsl:for-each>
55
56       <xsl:for-each select="marc:datafield[@tag='100']">
57         <pz:metadata type="author">
58           <xsl:value-of select="marc:subfield[@code='a']"/>
59         </pz:metadata>
60       </xsl:for-each>
61
62       <xsl:for-each select="marc:datafield[@tag='520']">
63         <pz:metadata type="description">
64           <xsl:value-of select="marc:subfield[@code='a']"/>
65         </pz:metadata>
66       </xsl:for-each>
67
68       <xsl:for-each select="marc:datafield[@tag='700']">
69         <pz:metadata type="author">
70           <xsl:value-of select="marc:subfield[@code='a']"/>
71         </pz:metadata>
72       </xsl:for-each>
73
74       <xsl:for-each select="marc:datafield[@tag='720']">
75         <pz:metadata type="author">
76           <xsl:value-of select="marc:subfield[@code='a']"/>
77         </pz:metadata>
78       </xsl:for-each>
79
80       <xsl:for-each select="marc:datafield[@tag='856']">
81         <pz:metadata type="url">
82           <xsl:value-of select="marc:subfield[@code='u']"/>
83         </pz:metadata>
84       </xsl:for-each>
85
86       <xsl:for-each select="marc:datafield[@tag='773']">
87         <pz:metadata type="citation">
88           <xsl:for-each select="*">
89             <xsl:value-of select="normalize-space(.)"/>
90             <xsl:text> </xsl:text>
91           </xsl:for-each>
92         </pz:metadata>
93       </xsl:for-each>
94
95     </pz:record>
96   </xsl:template>
97
98 </xsl:stylesheet>