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"
9 <xsl:output indent="yes" method="xml" version="1.0"
11 <xsl:template name="record-hook" />
12 <xsl:variable name="type" select="/opt/prim:PrimoNMBib/prim:display/prim:type"/>
13 <xsl:variable name="is_article" select="$type = 'article'" />
14 <xsl:variable name="fulltext" select="/opt/prim:PrimoNMBib/prim:delivery/prim:fulltext"/>
15 <xsl:variable name="has_fulltext">
17 <xsl:when test="$fulltext = 'no_fulltext' ">
18 <xsl:text>no</xsl:text>
20 <xsl:when test="$fulltext = 'fulltext'">
21 <xsl:text>yes</xsl:text>
24 <xsl:text>no</xsl:text>
29 <xsl:template match="/">
30 <xsl:apply-templates />
33 <xsl:template match="sear:RESULT">
35 <xsl:apply-templates />
39 <xsl:template match="sear:DOC">
41 <xsl:apply-templates />
45 <xsl:template match="prim:PrimoNMBib">
46 <xsl:apply-templates />
49 <xsl:template match="prim:control">
50 <xsl:for-each select="prim:recordid">
51 <pz:metadata type="id">
52 <xsl:value-of select="."/>
57 <xsl:template match="prim:addata">
58 <!-- <xsl:variable name="yearmonthday" select="@date" /> -->
60 <xsl:for-each select="prim:date">
61 <pz:metadata type="date">
62 <xsl:value-of select="substring(.,1,4)" />
64 <pz:metadata type="journal-month">
65 <xsl:value-of select="substring(.,4,1)" />
69 <xsl:for-each select="prim:volume">
70 <pz:metadata type="volume-number">
71 <xsl:value-of select="." />
75 <xsl:for-each select="prim:issue">
76 <pz:metadata type="issue-number">
77 <xsl:value-of select="." />
81 <xsl:variable name="spage" select="prim:spage" />
82 <xsl:variable name="epage" select="prim:epage" />
83 <xsl:variable name="pages" select="prim:pages" />
86 <!-- in some case primo wrongly returns a range in spage, we're done -->
87 <xsl:when test="contains($spage,'-')">
88 <pz:metadata type="pages-number">
89 <xsl:value-of select="$spage" />
92 <!-- if there is a range in pages, we're also done -->
93 <xsl:when test="contains($pages,'-')">
94 <pz:metadata type="pages-number">
95 <xsl:value-of select="$pages" />
98 <!-- otherwise, construct -->
99 <xsl:when test="$spage">
100 <pz:metadata type="pages-number">
101 <xsl:value-of select="$spage" />
102 <xsl:if test="string-length($epage)">
103 <xsl:text>-</xsl:text>
104 <xsl:value-of select="$epage" />
110 <xsl:for-each select="prim:issn">
111 <pz:metadata type="issn">
112 <xsl:value-of select="." />
116 <xsl:for-each select="prim:jtitle">
117 <pz:metadata type="journal-title">
118 <xsl:value-of select="." />
123 <xsl:template match="prim:delivery">
124 <xsl:if test="$has_fulltext">
125 <pz:metadata type="has-fulltext">
126 <xsl:value-of select="$has_fulltext" />
131 <xsl:template match="prim:display">
132 <xsl:for-each select="prim:type">
133 <xsl:variable name="type" select="."/>
134 <pz:metadata type="medium">
136 <xsl:when test="$type ='article' and $has_fulltext = 'yes'">
137 <xsl:text>e-article</xsl:text>
139 <xsl:when test="$type = 'article' and $has_fulltext = 'no'">
140 <xsl:text>article</xsl:text>
143 <xsl:value-of select="$type"/>
147 <pz:metadata type="debug_isarticle"><xsl:value-of select="$is_article"/></pz:metadata>
150 <xsl:for-each select="prim:title">
151 <pz:metadata type="title">
152 <xsl:value-of select="." />
156 <xsl:for-each select="prim:ispartof">
157 <pz:metadata type="journal-subpart">
158 <xsl:value-of select="." />
160 <pz:metadata type="citation">
161 <xsl:value-of select="." />
166 <xsl:template match="prim:facets">
167 <xsl:for-each select="prim:topic">
168 <pz:metadata type="subject">
169 <xsl:value-of select="." />
174 <xsl:template match="sear:LINKS" >
175 <xsl:for-each select="sear:openurl">
176 <pz:metadata type="electronic-url">
177 <xsl:value-of select="."/>
182 <xsl:template match="prim:search">
184 <xsl:for-each select="prim:creatorcontrib">
185 <pz:metadata type="author">
186 <xsl:value-of select="." />
190 <xsl:for-each select="prim:description">
191 <pz:metadata type="description">
192 <xsl:value-of select="." />
197 <xsl:for-each select="prim:sub">
198 <pz:metadata type="subject">
199 <xsl:value-of select="." />
203 <!-- passthrough id data -->
204 <xsl:for-each select="pz:metadata">
205 <xsl:copy-of select="." />
207 <!-- other stylesheets importing this might want to define this -->
209 <xsl:call-template name="record-hook" />
212 <xsl:template match="text()" />