Bug 3213 - Add UNIMARC XSLT stylesheet
[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" select="marc:datafield[@tag=090]/marc:subfield[@code='a']"/>
23   <xsl:variable name="isbn" select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
24         
25   <xsl:if test="marc:datafield[@tag=200]">
26     <xsl:for-each select="marc:datafield[@tag=200]">
27         <a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="$biblionumber"/></xsl:attribute>
28         <xsl:value-of select="marc:subfield[@code='a']"/>
29       </a>
30       <xsl:if test="marc:subfield[@code='e']">
31         <xsl:text> : </xsl:text>
32         <xsl:value-of select="marc:subfield[@code='e']"/>
33       </xsl:if>
34       <xsl:if test="marc:subfield[@code='b']">
35         <xsl:text> [</xsl:text>
36         <xsl:value-of select="marc:subfield[@code='b']"/>
37         <xsl:text>]</xsl:text>
38       </xsl:if>
39       <xsl:if test="marc:subfield[@code='f']">
40         <xsl:text> / </xsl:text>
41         <xsl:value-of select="marc:subfield[@code='f']"/>
42       </xsl:if>
43       <xsl:if test="marc:subfield[@code='g']">
44         <xsl:text> ; </xsl:text>
45         <xsl:value-of select="marc:subfield[@code='g']"/>
46       </xsl:if>
47     </xsl:for-each>
48   </xsl:if>
49
50   <xsl:call-template name="tag_4xx" />
51
52   <xsl:call-template name="tag_210" />
53
54   <xsl:call-template name="tag_215" />
55
56   <span class="results_summary">
57     <span class="label">DisponibilitĂ©: </span>
58     <xsl:choose>
59       <xsl:when test="marc:datafield[@tag=856]">
60         <xsl:for-each select="marc:datafield[@tag=856]">
61           <xsl:choose>
62             <xsl:when test="@ind2=0">
63               <a>
64                 <xsl:attribute name="href">
65                   <xsl:value-of select="marc:subfield[@code='u']"/>
66                 </xsl:attribute>
67                 <xsl:choose>
68                   <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
69                     <xsl:call-template name="subfieldSelect">                        
70                       <xsl:with-param name="codes">y3z</xsl:with-param>                    
71                     </xsl:call-template>
72                   </xsl:when>
73                   <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
74                     Click here to access online
75                   </xsl:when>
76                 </xsl:choose>
77               </a>
78               <xsl:choose>
79                 <xsl:when test="position()=last()"></xsl:when>
80                 <xsl:otherwise> | </xsl:otherwise>
81               </xsl:choose>
82             </xsl:when> 
83           </xsl:choose>
84         </xsl:for-each>
85       </xsl:when>
86       <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">
87         Pas de copie disponible
88       </xsl:when>
89       <xsl:when test="count(key('item-by-status', 'available'))>0">
90         <span class="available">
91           <b><xsl:text>pour le prĂȘt: </xsl:text></b>
92           <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
93           <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
94             <xsl:value-of select="items:homebranch"/>
95                             <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]
96                             </xsl:if>
97             <xsl:text> (</xsl:text>
98             <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
99             <xsl:text>)</xsl:text>
100             <xsl:choose>
101               <xsl:when test="position()=last()">
102                 <xsl:text>. </xsl:text>
103               </xsl:when>
104               <xsl:otherwise>
105                 <xsl:text>, </xsl:text>
106               </xsl:otherwise>
107             </xsl:choose>
108           </xsl:for-each>
109         </span>
110       </xsl:when>
111     </xsl:choose>
112     <xsl:choose>
113       <xsl:when test="count(key('item-by-status', 'reference'))>0">
114         <span class="available">
115           <b><xsl:text>Copies available for reference: </xsl:text></b>
116           <xsl:variable name="reference_items"
117                         select="key('item-by-status', 'reference')"/>
118           <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]">
119             <xsl:value-of select="items:homebranch"/>
120             <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">[<xsl:value-of select="items:itemcallnumber"/>]</xsl:if>
121             <xsl:text> (</xsl:text>
122             <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch)))"/>
123             <xsl:text>)</xsl:text>
124             <xsl:choose>
125               <xsl:when test="position()=last()">
126                 <xsl:text>. </xsl:text>
127               </xsl:when>
128               <xsl:otherwise>
129                 <xsl:text>, </xsl:text>
130               </xsl:otherwise>
131             </xsl:choose>
132           </xsl:for-each>
133         </span>
134       </xsl:when>
135     </xsl:choose>
136     <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
137       <span class="unavailable">
138         <xsl:text>Checked out (</xsl:text>
139         <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
140         <xsl:text>). </xsl:text>
141       </span>
142     </xsl:if>
143     <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
144       <span class="unavailable">
145         <xsl:text>Withdrawn (</xsl:text>
146         <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
147         <xsl:text>). </xsl:text>
148       </span>
149     </xsl:if>
150     <xsl:if test="count(key('item-by-status', 'Lost'))>0">
151       <span class="unavailable">
152         <xsl:text>Lost (</xsl:text>
153         <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
154         <xsl:text>). </xsl:text>
155       </span>
156     </xsl:if>
157     <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
158       <span class="unavailable">
159         <xsl:text>Damaged (</xsl:text>
160         <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
161         <xsl:text>). </xsl:text>
162       </span>
163     </xsl:if>
164     <xsl:if test="count(key('item-by-status', 'On Orangemanr'))>0">
165       <span class="unavailable">
166         <xsl:text>On order (</xsl:text>
167         <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
168         <xsl:text>). </xsl:text>
169       </span>
170     </xsl:if>
171     <xsl:if test="count(key('item-by-status', 'In transit'))>0">
172       <span class="unavailable">
173         <xsl:text>In transit (</xsl:text>
174         <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
175         <xsl:text>). </xsl:text>
176       </span>
177     </xsl:if>
178   </span>
179
180 </xsl:template>
181
182 </xsl:stylesheet>