Use CF starndard field names for issue, volume, page DBC-152
[pazpar2-moved-to-github.git] / etc / xsl / primo-pz2.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" 
4   xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
5   xmlns:tmarc="http://www.indexdata.com/turbomarc"
6   xmlns:prim="http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib" 
7   xmlns:sear="http://www.exlibrisgroup.com/xsd/jaguar/search"
8 >
9
10   <xsl:output indent="yes" method="xml" version="1.0"
11     encoding="UTF-8" />
12
13   <xsl:template name="record-hook" />
14
15   <xsl:variable name="type" select="/opt/prim:PrimoNMBib/prim:display/prim:type"/>
16   <xsl:variable name="is_article" select="$type = 'article'" />
17   <xsl:variable name="fulltext" select="/opt/prim:PrimoNMBib/prim:delivery/prim:fulltext"/>
18   <xsl:variable name="has_fulltext">
19     <xsl:choose>
20       <xsl:when test="$fulltext = 'no_fulltext' ">
21         <xsl:text>no</xsl:text>
22       </xsl:when>
23       <xsl:when test="$fulltext = 'fulltext'">
24         <xsl:text>yes</xsl:text>
25       </xsl:when>
26       <xsl:otherwise>
27         <xsl:text>no</xsl:text>
28       </xsl:otherwise>
29     </xsl:choose>
30   </xsl:variable>
31
32   <xsl:template match="/">
33     <xsl:apply-templates />
34   </xsl:template>
35
36   <xsl:template match="sear:RESULT">
37     <pz:records>
38       <xsl:apply-templates />
39     </pz:records>
40   </xsl:template>
41
42   <xsl:template match="sear:DOC">
43     <pz:record>
44       <xsl:apply-templates />
45     </pz:record>
46   </xsl:template>
47
48   <xsl:template match="prim:PrimoNMBib">
49     <xsl:apply-templates />
50   </xsl:template>
51   
52   <xsl:template match="prim:control"> 
53     <xsl:for-each select="prim:recordid">
54       <pz:metadata type="id">
55         <xsl:value-of select="."/>
56       </pz:metadata>
57     </xsl:for-each>
58   </xsl:template>
59
60   <xsl:template match="prim:addata">
61     <!--    <xsl:variable name="yearmonthday" select="@date" /> -->
62
63     <xsl:for-each select="prim:date">
64       <pz:metadata type="date">
65         <xsl:value-of select="substring(.,1,4)" />
66       </pz:metadata>
67       <pz:metadata type="journal-month">
68         <xsl:value-of select="substring(.,4,1)" />
69       </pz:metadata>
70     </xsl:for-each>
71
72     <xsl:for-each select="prim:volume">
73       <pz:metadata type="volume">
74         <xsl:value-of select="." />
75       </pz:metadata>
76     </xsl:for-each>
77
78     <xsl:for-each select="prim:issue">
79       <pz:metadata type="issue">
80         <xsl:value-of select="." />
81       </pz:metadata>
82     </xsl:for-each>
83
84     <xsl:for-each select="prim:spage">
85       <pz:metadata type="page">
86         <xsl:value-of select="." />
87       </pz:metadata>
88     </xsl:for-each>
89
90     <xsl:for-each select="prim:issn">
91       <pz:metadata type="issn">
92         <xsl:value-of select="." />
93       </pz:metadata>
94     </xsl:for-each>
95
96     <xsl:for-each select="prim:jtitle">
97       <pz:metadata type="journal-title">
98         <xsl:value-of select="." />
99       </pz:metadata>
100     </xsl:for-each>
101   </xsl:template>
102
103   <xsl:template match="prim:delivery">  
104
105     <xsl:if test="$has_fulltext">
106       <pz:metadata type="has-fulltext">
107         <xsl:value-of select="$has_fulltext" />
108       </pz:metadata>
109     </xsl:if>
110
111   </xsl:template>
112
113   <xsl:template match="prim:display">
114
115 <!--
116     <xsl:for-each select="prim:creator">
117        <pz:metadata type="author">
118         <xsl:value-of select="." />
119       </pz:metadata>
120     </xsl:for-each>
121 -->
122     <xsl:for-each select="prim:type">
123       <xsl:variable name="type" select="."/>
124       <pz:metadata type="medium">
125         <xsl:choose>
126           <xsl:when test="$type ='article' and $has_fulltext = 'yes'">
127             <xsl:text>e-article</xsl:text>
128           </xsl:when>
129           <xsl:when  test="$type = 'article' and $has_fulltext = 'no'">
130             <xsl:text>article</xsl:text>
131           </xsl:when>
132           <xsl:otherwise>
133             <xsl:value-of select="$type"/>
134           </xsl:otherwise>
135         </xsl:choose>
136 <!--        <xsl:value-of select="$type" /> -->
137       </pz:metadata>
138       <pz:metadata type="debug_isarticle"><xsl:value-of select="$is_article"/></pz:metadata>
139     </xsl:for-each>  
140
141     <xsl:for-each select="prim:title">
142       <pz:metadata type="title">
143         <xsl:value-of select="." />
144       </pz:metadata>
145     </xsl:for-each>  
146
147     <xsl:for-each select="prim:ispartof">
148       <pz:metadata type="journal-subpart">
149         <xsl:value-of select="." />
150       </pz:metadata>
151     </xsl:for-each>
152 <!--
153     <xsl:apply-templates />
154 -->
155   </xsl:template>
156
157   <xsl:template match="prim:facets">
158     <xsl:for-each select="prim:topic">
159        <pz:metadata type="subject">
160         <xsl:value-of select="." />
161       </pz:metadata>
162     </xsl:for-each>  
163   </xsl:template>
164
165   <xsl:template match="sear:LINKS" >
166     <xsl:for-each select="sear:openurl"> 
167       <pz:metadata type="electronic-url">
168         <xsl:value-of select="."/>
169       </pz:metadata>
170     </xsl:for-each>
171   </xsl:template>
172
173   <xsl:template match="prim:search">
174
175     <xsl:for-each select="prim:creatorcontrib">
176        <pz:metadata type="author">
177         <xsl:value-of select="." />
178       </pz:metadata>
179     </xsl:for-each>
180
181     <xsl:for-each select="prim:description">
182       <pz:metadata type="description">
183         <xsl:value-of select="." />
184       </pz:metadata>
185     </xsl:for-each>
186
187
188     <xsl:for-each select="prim:sub">
189       <pz:metadata type="subject">
190         <xsl:value-of select="." />
191       </pz:metadata>
192     </xsl:for-each>
193
194     <!-- passthrough id data -->
195     <xsl:for-each select="pz:metadata">
196       <xsl:copy-of select="." />
197     </xsl:for-each>
198     <!-- other stylesheets importing this might want to define this -->
199
200     <xsl:call-template name="record-hook" />    
201   </xsl:template>
202
203   <xsl:template match="text()" />
204
205 </xsl:stylesheet>