Should now be functionally equivalent to marc21.xsl
[pazpar2-moved-to-github.git] / etc / dc.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3
4     This stylesheet expects oai/dc records
5 -->
6 <xsl:stylesheet
7     version="1.0"
8     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9     xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
10     xmlns:dc="http://purl.org/dc/elements/1.1/">
11
12  <xsl:output indent="yes"
13         method="xml"
14         version="1.0"
15         encoding="UTF-8"/>
16
17   <xsl:template match="/*">
18     <pz:record>
19
20       <xsl:attribute name="mergekey">
21         <xsl:text>title </xsl:text>
22         <xsl:value-of select="dc:title[1]"/>
23         <xsl:text> author </xsl:text>
24         <xsl:value-of select="dc:creator[1]"/>
25       </xsl:attribute>
26
27       <pz:metadata type="id">
28         <xsl:value-of select="dc:identifier"/>
29       </pz:metadata>
30
31       <xsl:for-each select="dc:title">
32         <pz:metadata type="title">
33           <xsl:value-of select="."/>
34         </pz:metadata>
35       </xsl:for-each>
36
37       <xsl:for-each select="dc:date">
38         <pz:metadata type="date">
39           <xsl:value-of select="."/>
40               </pz:metadata>
41       </xsl:for-each>
42
43       <xsl:for-each select="dc:subject">
44         <pz:metadata type="subject">
45                 <xsl:value-of select="."/>
46               </pz:metadata>
47       </xsl:for-each>
48
49       <xsl:for-each select="dc:creator">
50               <pz:metadata type="author">
51           <xsl:value-of select="."/>
52               </pz:metadata>
53       </xsl:for-each>
54
55       <xsl:for-each select="dc:description">
56         <pz:metadata type="description">
57                 <xsl:value-of select="."/>
58               </pz:metadata>
59       </xsl:for-each>
60
61       <xsl:for-each select="dc:identifier">
62         <pz:metadata type="electronic-url">
63                 <xsl:value-of select="."/>
64               </pz:metadata>
65       </xsl:for-each>
66
67       <xsl:for-each select="dc:type">
68         <pz:metadata type="medium">
69                 <xsl:value-of select="."/>
70               </pz:metadata>
71       </xsl:for-each>
72
73     </pz:record>
74   </xsl:template>
75
76   <xsl:template match="text()"/>
77
78 </xsl:stylesheet>