Bug 9925 - Remove unused table-pager include
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / xslt / UNIMARCslimUtils.xsl
1 <?xml version='1.0'?>
2
3 <!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
4
5 <xsl:stylesheet version="1.0"
6   xmlns:marc="http://www.loc.gov/MARC21/slim"
7   xmlns:items="http://www.koha-community.org/items"
8   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9   exclude-result-prefixes="marc items">
10
11   <xsl:template name="datafield">
12     <xsl:param name="tag"/>
13     <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
14     <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
15     <xsl:param name="subfields"/>
16     <xsl:element name="datafield">
17       <xsl:attribute name="tag">
18         <xsl:value-of select="$tag"/>
19       </xsl:attribute>
20       <xsl:attribute name="ind1">
21         <xsl:value-of select="$ind1"/>
22       </xsl:attribute>
23       <xsl:attribute name="ind2">
24        <xsl:value-of select="$ind2"/>
25          </xsl:attribute>
26        <xsl:copy-of select="$subfields"/>
27     </xsl:element>
28   </xsl:template>
29
30   <xsl:template name="tag_210">
31     <li>
32       <strong>Publication: </strong>
33       <xsl:for-each select="marc:datafield[@tag=210]">
34         <span>
35           <xsl:call-template name="addClassRtl" />
36           <xsl:value-of select="marc:subfield[@code='a']"/>
37           <xsl:if test="marc:subfield[@code='b']">
38             <xsl:if test="marc:subfield[@code='a']">, </xsl:if>
39             <xsl:value-of select="marc:subfield[@code='b']"/>
40           </xsl:if>
41           <xsl:if test="marc:subfield[@code='a' or @code='b']">
42             <xsl:if test="marc:subfield[@code='a']"> : </xsl:if>
43             <xsl:value-of select="marc:subfield[@code='c']"/>
44           </xsl:if>
45           <xsl:if test="marc:subfield[@code='d']">
46             <xsl:if test="marc:subfield[@code='a' or @code='c']">, </xsl:if>
47             <xsl:value-of select="marc:subfield[@code='d']"/>
48           </xsl:if>
49           <xsl:if test="marc:subfield[@code='e']">
50             <xsl:if test="marc:subfield[@code='a' or @code='c' or @code='d']"> — </xsl:if>
51             <xsl:value-of select="marc:subfield[@code='e']"/>
52           </xsl:if>
53           <xsl:if test="marc:subfield[@code='g']">
54             <xsl:if test="marc:subfield[@code='e']"> : </xsl:if>
55             <xsl:value-of select="marc:subfield[@code='g']"/>
56           </xsl:if>
57           <xsl:if test="marc:subfield[@code='h']">
58             <xsl:if test="marc:subfield[@code='e' or @code='g']">, </xsl:if>
59             <xsl:value-of select="marc:subfield[@code='h']"/>
60           </xsl:if>
61           <xsl:if test="not (position() = last())">
62             <xsl:text> • </xsl:text>
63           </xsl:if>
64         </span>
65       </xsl:for-each>
66     </li>
67   </xsl:template>
68
69         <xsl:template name="tag_215">
70     <xsl:for-each select="marc:datafield[@tag=215]">
71       <li>
72         <strong>Description: </strong>
73         <xsl:if test="marc:subfield[@code='a']">
74           <xsl:value-of select="marc:subfield[@code='a']"/>
75         </xsl:if>
76         <xsl:if test="marc:subfield[@code='c']"> :
77           <xsl:value-of select="marc:subfield[@code='c']"/>
78         </xsl:if>
79         <xsl:if test="marc:subfield[@code='d']"> ;
80           <xsl:value-of select="marc:subfield[@code='d']"/>
81         </xsl:if>
82         <xsl:if test="marc:subfield[@code='e']"> +
83           <xsl:value-of select="marc:subfield[@code='e']"/>
84         </xsl:if>
85       </li>
86     </xsl:for-each>
87   </xsl:template>
88
89         <xsl:template name="tag_4xx">
90     <xsl:for-each select="marc:datafield[@tag=464 or @tag=461]">
91         <li>
92         <strong>Linked with: </strong>
93         <span>
94           <xsl:call-template name="addClassRtl" />
95           <xsl:if test="marc:subfield[@code='t']">
96             <xsl:value-of select="marc:subfield[@code='t']"/>
97           </xsl:if>
98           <xsl:if test="marc:subfield[@code='e']"> :
99             <xsl:value-of select="marc:subfield[@code='e']"/>
100           </xsl:if>
101           <xsl:if test="marc:subfield[@code='f']"> /
102             <xsl:value-of select="marc:subfield[@code='f']"/>
103           </xsl:if>
104           <xsl:if test="marc:subfield[@code='v']">,
105             <xsl:value-of select="marc:subfield[@code='v']"/>
106           </xsl:if>
107         </span>
108       </li>
109     </xsl:for-each>
110   </xsl:template>
111
112         <xsl:template name="subfieldSelect">
113                 <xsl:param name="codes"/>
114                 <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
115                 <xsl:param name="subdivCodes"/>
116                 <xsl:param name="subdivDelimiter"/>
117                 <xsl:variable name="str">
118                         <xsl:for-each select="marc:subfield">
119                                 <xsl:if test="contains($codes, @code)">
120                     <xsl:if test="contains($subdivCodes, @code)">
121                         <xsl:value-of select="$subdivDelimiter"/>
122                     </xsl:if>
123                                         <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
124                                 </xsl:if>
125                         </xsl:for-each>
126                 </xsl:variable>
127                 <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
128         </xsl:template>
129
130         <xsl:template name="buildSpaces">
131                 <xsl:param name="spaces"/>
132                 <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
133                 <xsl:if test="$spaces>0">
134                         <xsl:value-of select="$char"/>
135                         <xsl:call-template name="buildSpaces">
136                                 <xsl:with-param name="spaces" select="$spaces - 1"/>
137                                 <xsl:with-param name="char" select="$char"/>
138                         </xsl:call-template>
139                 </xsl:if>
140         </xsl:template>
141
142         <xsl:template name="chopSpecialCharacters">
143         <xsl:param name="title" />
144         <xsl:variable name="ntitle"
145              select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
146         <xsl:value-of select="$ntitle" />
147     </xsl:template>
148
149
150         <xsl:template name="chopPunctuation">
151                 <xsl:param name="chopString"/>
152                 <xsl:variable name="length" select="string-length($chopString)"/>
153                 <xsl:choose>
154                         <xsl:when test="$length=0"/>
155                         <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
156                                 <xsl:call-template name="chopPunctuation">
157                                         <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
158                                 </xsl:call-template>
159                         </xsl:when>
160                         <xsl:when test="not($chopString)"/>
161                         <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
162                 </xsl:choose>
163     <xsl:text> </xsl:text>
164         </xsl:template>
165
166         <xsl:template name="addClassRtl">
167     <xsl:variable name="lang" select="marc:subfield[@code='7']" />
168     <xsl:if test="$lang = 'ha' or $lang = 'Hebrew' or $lang = 'fa' or $lang = 'Arabe'">
169       <xsl:attribute name="class">rtl</xsl:attribute>
170     </xsl:if>
171   </xsl:template>
172
173   <xsl:template name="tag_title">
174     <xsl:param name="tag" />
175     <xsl:param name="label" />
176     <xsl:if test="marc:datafield[@tag=$tag]">
177       <li>
178         <strong><xsl:value-of select="$label"/>: </strong>
179         <xsl:for-each select="marc:datafield[@tag=$tag]">
180           <xsl:value-of select="marc:subfield[@code='a']" />
181           <xsl:if test="marc:subfield[@code='d']">
182             <xsl:text> : </xsl:text>
183             <xsl:value-of select="marc:subfield[@code='e']"/>
184           </xsl:if>
185           <xsl:if test="marc:subfield[@code='e']">
186             <xsl:for-each select="marc:subfield[@code='e']">
187               <xsl:text> </xsl:text>
188               <xsl:value-of select="."/>
189             </xsl:for-each>
190           </xsl:if>
191           <xsl:if test="marc:subfield[@code='f']">
192             <xsl:text> / </xsl:text>
193             <xsl:value-of select="marc:subfield[@code='f']"/>
194           </xsl:if>
195           <xsl:if test="marc:subfield[@code='h']">
196             <xsl:text>, </xsl:text>
197             <xsl:value-of select="marc:subfield[@code='h']"/>
198           </xsl:if>
199           <xsl:if test="marc:subfield[@code='i']">
200             <xsl:text>, </xsl:text>
201             <xsl:value-of select="marc:subfield[@code='i']"/>
202           </xsl:if>
203           <xsl:if test="marc:subfield[@code='v']">
204             <xsl:text>, </xsl:text>
205             <xsl:value-of select="marc:subfield[@code='v']"/>
206           </xsl:if>
207           <xsl:if test="marc:subfield[@code='x']">
208             <xsl:text>, </xsl:text>
209             <xsl:value-of select="marc:subfield[@code='x']"/>
210           </xsl:if>
211           <xsl:if test="marc:subfield[@code='z']">
212             <xsl:text>, </xsl:text>
213             <xsl:value-of select="marc:subfield[@code='z']"/>
214           </xsl:if>
215         </xsl:for-each>
216       </li>
217     </xsl:if>
218   </xsl:template>
219
220
221   <xsl:template name="tag_subject">
222     <xsl:param name="tag" />
223     <xsl:param name="label" />
224     <xsl:if test="marc:datafield[@tag=$tag]">
225       <li>
226         <strong><xsl:value-of select="$label"/>: </strong>
227         <xsl:for-each select="marc:datafield[@tag=$tag]">
228           <a>
229             <xsl:choose>
230               <xsl:when test="marc:subfield[@code=9]">
231                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
232               </xsl:when>
233               <xsl:otherwise>
234                 <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su:<xsl:value-of select="marc:subfield[@code='a']"/></xsl:attribute>
235               </xsl:otherwise>
236             </xsl:choose>
237             <xsl:call-template name="chopPunctuation">
238               <xsl:with-param name="chopString">
239                 <xsl:call-template name="subfieldSelect">
240                     <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
241                     <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
242                     <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
243                 </xsl:call-template>
244               </xsl:with-param>
245             </xsl:call-template>
246           </a>
247           <xsl:if test="not (position()=last())">
248             <xsl:text> | </xsl:text>
249           </xsl:if>
250         </xsl:for-each>
251       </li>
252     </xsl:if>
253   </xsl:template>
254
255
256   <xsl:template name="tag_7xx">
257     <xsl:param name="tag" />
258     <xsl:param name="label" />
259     <xsl:if test="marc:datafield[@tag=$tag]">
260       <li>
261         <strong><xsl:value-of select="$label" />: </strong>
262         <xsl:for-each select="marc:datafield[@tag=$tag]">
263           <span>
264             <xsl:call-template name="addClassRtl" />
265             <a>
266               <xsl:choose>
267                 <xsl:when test="marc:subfield[@code=9]">
268                   <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="marc:subfield[@code=9]"/></xsl:attribute>
269                 </xsl:when>
270                 <xsl:otherwise>
271                   <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=au:<xsl:value-of select="marc:subfield[@code='a']"/><xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='b']"/></xsl:attribute>
272                 </xsl:otherwise>
273               </xsl:choose>
274               <xsl:if test="marc:subfield[@code='a']">
275                 <xsl:value-of select="marc:subfield[@code='a']"/>
276               </xsl:if>
277               <xsl:if test="marc:subfield[@code='b']">
278                 <xsl:text>, </xsl:text>
279                 <xsl:value-of select="marc:subfield[@code='b']"/>
280               </xsl:if>
281               <xsl:if test="marc:subfield[@code='c']">
282                 <xsl:text>, </xsl:text>
283                 <xsl:value-of select="marc:subfield[@code='c']"/>
284               </xsl:if>
285               <xsl:if test="marc:subfield[@code='d']">
286                 <xsl:text> </xsl:text>
287                 <xsl:value-of select="marc:subfield[@code='d']"/>
288               </xsl:if>
289               <xsl:if test="marc:subfield[@code='f']">
290                 <span dir="ltr">
291                 <xsl:text> (</xsl:text>
292                 <xsl:value-of select="marc:subfield[@code='f']"/>
293                 <xsl:text>)</xsl:text>
294                 </span>
295               </xsl:if>
296               <xsl:if test="marc:subfield[@code='g']">
297                 <xsl:text> </xsl:text>
298                 <xsl:value-of select="marc:subfield[@code='g']"/>
299               </xsl:if>
300               <xsl:if test="marc:subfield[@code='p']">
301                 <xsl:text> </xsl:text>
302                 <xsl:value-of select="marc:subfield[@code='p']"/>
303               </xsl:if>
304             </a>
305           </span>
306           <xsl:if test="not (position() = last())">
307             <xsl:text> ; </xsl:text>
308           </xsl:if>
309         </xsl:for-each>
310       </li>
311     </xsl:if>
312   </xsl:template>
313
314 </xsl:stylesheet>