Merge commit 'origin/master' into labels_recon
[koha.git] / koha-tmpl / opac-tmpl / prog / en / xslt / UNIMARCslim2OPACResults.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
3 <xsl:stylesheet version="1.0"
4   xmlns:marc="http://www.loc.gov/MARC21/slim"
5   xmlns:items="http://www.koha.org/items"
6   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7   exclude-result-prefixes="marc items">
8
9 <xsl:import href="UNIMARCslimUtils.xsl"/>
10 <xsl:output method = "xml" indent="yes" omit-xml-declaration = "yes" />
11 <xsl:key name="item-by-status" match="items:item" use="items:status"/>
12 <xsl:key name="item-by-status-and-branch" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
13
14 <xsl:template match="/">
15   <xsl:apply-templates/>
16 </xsl:template>
17
18 <xsl:template match="marc:record">
19   <xsl:variable name="leader" select="marc:leader"/>
20   <xsl:variable name="leader6" select="substring($leader,7,1)"/>
21   <xsl:variable name="leader7" select="substring($leader,8,1)"/>
22   <xsl:variable name="biblionumber"
23    select="marc:datafield[@tag=090]/marc:subfield[@code='a']"/>
24   <xsl:variable name="isbn"
25    select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
26
27   <xsl:if test="marc:datafield[@tag=200]">
28     <xsl:for-each select="marc:datafield[@tag=200]">
29       <xsl:variable name="title" select="marc:subfield[@code='a']"/>
30       <xsl:variable name="ntitle"
31        select="translate($title, '&#x0098;&#x009C;','')"/>
32       <div>
33         <xsl:call-template name="addClassRtl" />
34         <span class="results_summary">
35           <span class="label"/>
36           <a>
37             <xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
38             <xsl:value-of select="$ntitle" />
39           </a>
40           <xsl:if test="marc:subfield[@code='e']">
41             <xsl:text> : </xsl:text>
42             <xsl:for-each select="marc:subfield[@code='e']">
43               <xsl:value-of select="."/>
44             </xsl:for-each>
45           </xsl:if>
46           <xsl:if test="marc:subfield[@code='b']">
47             <xsl:text> [</xsl:text>
48             <xsl:value-of select="marc:subfield[@code='b']"/>
49             <xsl:text>]</xsl:text>
50           </xsl:if>
51           <xsl:if test="marc:subfield[@code='f']">
52             <xsl:text> / </xsl:text>
53             <xsl:value-of select="marc:subfield[@code='f']"/>
54           </xsl:if>
55           <xsl:if test="marc:subfield[@code='g']">
56             <xsl:text> ; </xsl:text>
57             <xsl:value-of select="marc:subfield[@code='g']"/>
58           </xsl:if>
59         </span>
60       </div>
61     </xsl:for-each>
62   </xsl:if>
63
64   <xsl:call-template name="tag_4xx" />
65
66   <xsl:call-template name="tag_210" />
67
68   <xsl:call-template name="tag_215" />
69
70   <span class="results_summary">
71     <span class="label">DisponibilitĂ©: </span>
72     <xsl:choose>
73       <xsl:when test="marc:datafield[@tag=856]">
74         <xsl:for-each select="marc:datafield[@tag=856]">
75           <xsl:choose>
76             <xsl:when test="@ind2=0">
77               <a>
78                 <xsl:attribute name="href">
79                   <xsl:value-of select="marc:subfield[@code='u']"/>
80                 </xsl:attribute>
81                 <xsl:choose>
82                   <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
83                     <xsl:call-template name="subfieldSelect">                        
84                       <xsl:with-param name="codes">y3z</xsl:with-param>                    
85                     </xsl:call-template>
86                   </xsl:when>
87                   <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
88                     Click here to access online
89                   </xsl:when>
90                 </xsl:choose>
91               </a>
92               <xsl:choose>
93                 <xsl:when test="position()=last()"></xsl:when>
94                 <xsl:otherwise> | </xsl:otherwise>
95               </xsl:choose>
96             </xsl:when> 
97           </xsl:choose>
98         </xsl:for-each>
99       </xsl:when>
100       <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">
101         Pas de copie disponible
102       </xsl:when>
103       <xsl:when test="count(key('item-by-status', 'available'))>0">
104         <span class="available">
105           <b><xsl:text>pour le prĂȘt: </xsl:text></b>
106           <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
107           <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
108             <xsl:value-of select="items:homebranch"/>
109                             <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]
110                             </xsl:if>
111             <xsl:text> (</xsl:text>
112             <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
113             <xsl:text>)</xsl:text>
114             <xsl:choose>
115               <xsl:when test="position()=last()">
116                 <xsl:text>. </xsl:text>
117               </xsl:when>
118               <xsl:otherwise>
119                 <xsl:text>, </xsl:text>
120               </xsl:otherwise>
121             </xsl:choose>
122           </xsl:for-each>
123         </span>
124       </xsl:when>
125     </xsl:choose>
126     <xsl:choose>
127       <xsl:when test="count(key('item-by-status', 'reference'))>0">
128         <span class="available">
129           <b><xsl:text>Copies available for reference: </xsl:text></b>
130           <xsl:variable name="reference_items"
131                         select="key('item-by-status', 'reference')"/>
132           <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
133             <xsl:value-of select="items:homebranch"/>
134             <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
135             <xsl:text> (</xsl:text>
136             <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
137             <xsl:text>)</xsl:text>
138             <xsl:choose>
139               <xsl:when test="position()=last()">
140                 <xsl:text>. </xsl:text>
141               </xsl:when>
142               <xsl:otherwise>
143                 <xsl:text>, </xsl:text>
144               </xsl:otherwise>
145             </xsl:choose>
146           </xsl:for-each>
147         </span>
148       </xsl:when>
149     </xsl:choose>
150     <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
151       <span class="unavailable">
152         <xsl:text>Checked out (</xsl:text>
153         <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
154         <xsl:text>). </xsl:text>
155       </span>
156     </xsl:if>
157     <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
158       <span class="unavailable">
159         <xsl:text>Withdrawn (</xsl:text>
160         <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
161         <xsl:text>). </xsl:text>
162       </span>
163     </xsl:if>
164     <xsl:if test="count(key('item-by-status', 'Lost'))>0">
165       <span class="unavailable">
166         <xsl:text>Lost (</xsl:text>
167         <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
168         <xsl:text>). </xsl:text>
169       </span>
170     </xsl:if>
171     <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
172       <span class="unavailable">
173         <xsl:text>Damaged (</xsl:text>
174         <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
175         <xsl:text>). </xsl:text>
176       </span>
177     </xsl:if>
178     <xsl:if test="count(key('item-by-status', 'On Orangemanr'))>0">
179       <span class="unavailable">
180         <xsl:text>On order (</xsl:text>
181         <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
182         <xsl:text>). </xsl:text>
183       </span>
184     </xsl:if>
185     <xsl:if test="count(key('item-by-status', 'In transit'))>0">
186       <span class="unavailable">
187         <xsl:text>In transit (</xsl:text>
188         <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
189         <xsl:text>). </xsl:text>
190       </span>
191     </xsl:if>
192   </span>
193
194 </xsl:template>
195
196 </xsl:stylesheet>