View | Details | Raw Unified | Return to bug 30430
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl (-482 / +493 lines)
Lines 1-492 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet>
2
<!DOCTYPE stylesheet>
4
5
<xsl:stylesheet version="1.0"
3
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
4
	xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8
  xmlns:str="http://exslt.org/strings"
6
	xmlns:str="http://exslt.org/strings"
9
  exclude-result-prefixes="marc str">
7
  exclude-result-prefixes="marc str">
10
8
	<xsl:import href="UNIMARCslimUtils.xsl"/>
11
<xsl:import href="UNIMARCslimUtils.xsl"/>
9
	<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
12
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
10
	<xsl:template match="/">
13
<xsl:template match="/">
11
		<xsl:apply-templates/>
14
  <xsl:apply-templates/>
12
	</xsl:template>
15
</xsl:template>
13
	<xsl:template match="marc:record">
16
14
		<xsl:variable name="Show856uAsImage" select="marc:sysprefs/marc:syspref[@name='Display856uAsImage']"/>
17
<xsl:template match="marc:record">
15
		<xsl:variable name="leader" select="marc:leader"/>
18
  <xsl:variable name="Show856uAsImage" select="marc:sysprefs/marc:syspref[@name='Display856uAsImage']"/>
16
		<xsl:variable name="leader6" select="substring($leader,7,1)"/>
19
  <xsl:variable name="leader" select="marc:leader"/>
17
		<xsl:variable name="leader7" select="substring($leader,8,1)"/>
20
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
18
		<xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
21
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
19
		<xsl:if test="marc:datafield[@tag=200]">
22
  <xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
20
			<xsl:for-each select="marc:datafield[@tag=200]">
23
21
				<h1>
24
22
					<xsl:call-template name="addClassRtl" />
25
  <xsl:if test="marc:datafield[@tag=200]">
23
					<xsl:variable name="title" select="marc:subfield[@code='a']"/>
26
    <xsl:for-each select="marc:datafield[@tag=200]">
24
					<xsl:variable name="ntitle"
27
      <h1>
28
        <xsl:call-template name="addClassRtl" />
29
        <xsl:variable name="title" select="marc:subfield[@code='a']"/>
30
        <xsl:variable name="ntitle"
31
         select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
25
         select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
32
        <xsl:value-of select="$ntitle" />
26
					<xsl:value-of select="$ntitle" />
33
        <xsl:if test="marc:subfield[@code='e']">
27
					<xsl:if test="marc:subfield[@code='e']">
34
          <xsl:text> : </xsl:text>
28
						<xsl:text> : </xsl:text>
35
          <xsl:for-each select="marc:subfield[@code='e']">
29
						<xsl:for-each select="marc:subfield[@code='e']">
36
            <xsl:value-of select="."/>
30
							<xsl:value-of select="."/>
37
          </xsl:for-each>
31
						</xsl:for-each>
38
        </xsl:if>
32
					</xsl:if>
39
        <xsl:if test="marc:subfield[@code='b']">
33
					<xsl:if test="marc:subfield[@code='b']">
40
          <xsl:text> [</xsl:text>
34
						<xsl:text> [</xsl:text>
41
          <xsl:value-of select="marc:subfield[@code='b']"/>
35
						<xsl:value-of select="marc:subfield[@code='b']"/>
42
          <xsl:text>]</xsl:text>
36
						<xsl:text>]</xsl:text>
43
        </xsl:if>
37
					</xsl:if>
44
        <xsl:if test="marc:subfield[@code='f']">
38
					<xsl:if test="marc:subfield[@code='f']">
45
          <xsl:text> / </xsl:text>
39
						<xsl:text> / </xsl:text>
46
          <xsl:value-of select="marc:subfield[@code='f']"/>
40
						<xsl:value-of select="marc:subfield[@code='f']"/>
47
        </xsl:if>
41
					</xsl:if>
48
        <xsl:if test="marc:subfield[@code='g']">
42
					<xsl:if test="marc:subfield[@code='g']">
49
          <xsl:text> ; </xsl:text>
43
						<xsl:text> ; </xsl:text>
50
          <xsl:value-of select="marc:subfield[@code='g']"/>
44
						<xsl:value-of select="marc:subfield[@code='g']"/>
51
        </xsl:if>
45
					</xsl:if>
52
      </h1>
46
				</h1>
53
    </xsl:for-each>
47
			</xsl:for-each>
54
  </xsl:if>
48
		</xsl:if>
55
  <xsl:call-template name="tag_4xx" />
49
		<xsl:call-template name="tag_4xx" />
56
50
		<xsl:call-template name="tag_7xx">
57
  <xsl:call-template name="tag_7xx">
51
			<xsl:with-param name="tag">700</xsl:with-param>
58
    <xsl:with-param name="tag">700</xsl:with-param>
52
			<xsl:with-param name="label">Main Author</xsl:with-param>
59
    <xsl:with-param name="label">Main Author</xsl:with-param>
53
			<xsl:with-param name="spanclass">main_author</xsl:with-param>
60
    <xsl:with-param name="spanclass">main_author</xsl:with-param>
54
		</xsl:call-template>
61
  </xsl:call-template>
55
		<xsl:call-template name="tag_7xx">
62
56
			<xsl:with-param name="tag">710</xsl:with-param>
63
  <xsl:call-template name="tag_7xx">
57
			<xsl:with-param name="label">Corporate Author (Main)</xsl:with-param>
64
    <xsl:with-param name="tag">710</xsl:with-param>
58
			<xsl:with-param name="spanclass">corporate_main_author</xsl:with-param>
65
    <xsl:with-param name="label">Corporate Author (Main)</xsl:with-param>
59
		</xsl:call-template>
66
    <xsl:with-param name="spanclass">corporate_main_author</xsl:with-param>
60
		<xsl:call-template name="tag_7xx">
67
  </xsl:call-template>
61
			<xsl:with-param name="tag">701</xsl:with-param>
68
62
			<xsl:with-param name="label">Coauthor</xsl:with-param>
69
  <xsl:call-template name="tag_7xx">
63
			<xsl:with-param name="spanclass">coauthor</xsl:with-param>
70
    <xsl:with-param name="tag">701</xsl:with-param>
64
		</xsl:call-template>
71
    <xsl:with-param name="label">Coauthor</xsl:with-param>
65
		<xsl:call-template name="tag_7xx">
72
    <xsl:with-param name="spanclass">coauthor</xsl:with-param>
66
			<xsl:with-param name="tag">702</xsl:with-param>
73
  </xsl:call-template>
67
			<xsl:with-param name="label">Secondary Author</xsl:with-param>
74
68
			<xsl:with-param name="spanclass">secondary_author</xsl:with-param>
75
  <xsl:call-template name="tag_7xx">
69
		</xsl:call-template>
76
    <xsl:with-param name="tag">702</xsl:with-param>
70
		<xsl:call-template name="tag_7xx">
77
    <xsl:with-param name="label">Secondary Author</xsl:with-param>
71
			<xsl:with-param name="tag">711</xsl:with-param>
78
    <xsl:with-param name="spanclass">secondary_author</xsl:with-param>
72
			<xsl:with-param name="label">Corporate Author (Coauthor)</xsl:with-param>
79
  </xsl:call-template>
73
			<xsl:with-param name="spanclass">corporate_coauthor</xsl:with-param>
80
74
		</xsl:call-template>
81
  <xsl:call-template name="tag_7xx">
75
		<xsl:call-template name="tag_7xx">
82
    <xsl:with-param name="tag">711</xsl:with-param>
76
			<xsl:with-param name="tag">712</xsl:with-param>
83
    <xsl:with-param name="label">Corporate Author (Coauthor)</xsl:with-param>
77
			<xsl:with-param name="label">Corporate Author (Secondary)</xsl:with-param>
84
    <xsl:with-param name="spanclass">corporate_coauthor</xsl:with-param>
78
			<xsl:with-param name="spanclass">corporate_secondary_author</xsl:with-param>
85
  </xsl:call-template>
79
		</xsl:call-template>
86
80
		<xsl:if test="marc:datafield[@tag=101]">
87
  <xsl:call-template name="tag_7xx">
81
			<span class="results_summary language">
88
    <xsl:with-param name="tag">712</xsl:with-param>
82
				<span class="label">Language: </span>
89
    <xsl:with-param name="label">Corporate Author (Secondary)</xsl:with-param>
83
				<xsl:for-each select="marc:datafield[@tag=101]">
90
    <xsl:with-param name="spanclass">corporate_secondary_author</xsl:with-param>
84
					<xsl:for-each select="marc:subfield">
91
  </xsl:call-template>
85
						<xsl:choose>
92
86
							<xsl:when test="@code='b'">of intermediate text, </xsl:when>
93
  <xsl:if test="marc:datafield[@tag=101]">
87
							<xsl:when test="@code='c'">of original work, </xsl:when>
94
    <span class="results_summary language">
88
							<xsl:when test="@code='d'">of summary, </xsl:when>
95
      <span class="label">Language: </span>
89
							<xsl:when test="@code='e'">of contents page, </xsl:when>
96
      <xsl:for-each select="marc:datafield[@tag=101]">
90
							<xsl:when test="@code='f'">of title page, </xsl:when>
97
        <xsl:for-each select="marc:subfield">
91
							<xsl:when test="@code='g'">of title proper, </xsl:when>
98
          <xsl:choose>
92
							<xsl:when test="@code='h'">of libretto, </xsl:when>
99
            <xsl:when test="@code='b'">of intermediate text, </xsl:when>
93
							<xsl:when test="@code='i'">of accompanying material, </xsl:when>
100
            <xsl:when test="@code='c'">of original work, </xsl:when>
94
							<xsl:when test="@code='j'">of subtitles, </xsl:when>
101
            <xsl:when test="@code='d'">of summary, </xsl:when>
95
						</xsl:choose>
102
            <xsl:when test="@code='e'">of contents page, </xsl:when>
96
						<xsl:value-of select="text()"/>
103
            <xsl:when test="@code='f'">of title page, </xsl:when>
97
						<xsl:choose>
104
            <xsl:when test="@code='g'">of title proper, </xsl:when>
98
							<xsl:when test="position()=last()">
105
            <xsl:when test="@code='h'">of libretto, </xsl:when>
99
								<xsl:text>.</xsl:text>
106
            <xsl:when test="@code='i'">of accompanying material, </xsl:when>
100
							</xsl:when>
107
            <xsl:when test="@code='j'">of subtitles, </xsl:when>
101
							<xsl:otherwise>
108
          </xsl:choose>
102
								<xsl:text> ; </xsl:text>
109
          <xsl:value-of select="text()"/>
103
							</xsl:otherwise>
110
          <xsl:choose>
104
						</xsl:choose>
111
            <xsl:when test="position()=last()">
105
					</xsl:for-each>
112
              <xsl:text>.</xsl:text>
106
				</xsl:for-each>
113
            </xsl:when>
107
			</span>
114
            <xsl:otherwise>
108
		</xsl:if>
115
              <xsl:text> ; </xsl:text>
109
		<xsl:if test="marc:datafield[@tag=102]">
116
            </xsl:otherwise>
110
			<span class="results_summary country">
117
          </xsl:choose>
111
				<span class="label">Country: </span>
118
        </xsl:for-each>
112
				<xsl:for-each select="marc:datafield[@tag=102]">
119
      </xsl:for-each>
113
					<xsl:for-each select="marc:subfield">
120
    </span>
114
						<xsl:value-of select="text()"/>
121
  </xsl:if>
115
						<xsl:choose>
122
116
							<xsl:when test="position()=last()">
123
  <xsl:if test="marc:datafield[@tag=102]">
117
								<xsl:text>.</xsl:text>
124
    <span class="results_summary country">
118
							</xsl:when>
125
      <span class="label">Country: </span>
119
							<xsl:otherwise>
126
      <xsl:for-each select="marc:datafield[@tag=102]">
120
								<xsl:text>, </xsl:text>
127
        <xsl:for-each select="marc:subfield">
121
							</xsl:otherwise>
128
          <xsl:value-of select="text()"/>
122
						</xsl:choose>
129
          <xsl:choose>
123
					</xsl:for-each>
130
            <xsl:when test="position()=last()">
124
				</xsl:for-each>
131
              <xsl:text>.</xsl:text>
125
			</span>
132
            </xsl:when>
126
		</xsl:if>
133
              <xsl:otherwise><xsl:text>, </xsl:text>
127
134
            </xsl:otherwise>
128
        <xsl:if test="(marc:datafield[@tag=214] or marc:datafield[@tag=210])">
135
          </xsl:choose>
129
        	<xsl:choose>
136
        </xsl:for-each>
130
        		<xsl:when test="(marc:datafield[@tag=214] and  marc:datafield[@tag=210])">
137
      </xsl:for-each>
131
        			<xsl:call-template name="tag_214" />
138
    </span>
132
        		</xsl:when>
139
  </xsl:if>
133
        		<xsl:when test="(marc:datafield[@tag=214])">
140
134
        			<xsl:call-template name="tag_214" />
141
  <xsl:call-template name="tag_210" />
135
        		</xsl:when>
142
136
        		<xsl:when test="(marc:datafield[@tag=210])">
143
  <xsl:call-template name="tag_215" />
137
        			<xsl:call-template name="tag_210" />
144
138
        		</xsl:when>
145
  <xsl:if test="marc:controlfield[@tag=009]">
139
        	</xsl:choose>
146
    <span class="results_summary tag_009">
147
      <span class="label">Tag 009: </span>
148
      <xsl:value-of select="marc:controlfield[@tag=009]"/>
149
    </span>
150
  </xsl:if>
151
152
  <!-- Build ISBN -->
153
  <xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
154
    <span class="results_summary isbn">
155
      <span class="label">ISBN: </span>
156
      <xsl:for-each select="marc:datafield[@tag=010]/marc:subfield[@code='a']">
157
        <span property="isbn">
158
          <xsl:value-of select="."/>
159
          <xsl:choose>
160
            <xsl:when test="position()=last()">
161
              <xsl:text>.</xsl:text>
162
            </xsl:when>
163
            <xsl:otherwise>
164
              <xsl:text>; </xsl:text>
165
            </xsl:otherwise>
166
          </xsl:choose>
167
        </span>
168
      </xsl:for-each>
169
    </span>
170
  </xsl:if>
171
172
  <!-- Build ISSN -->
173
  <xsl:if test="marc:datafield[@tag=011]/marc:subfield[@code='a']">
174
    <span class="results_summary issn">
175
      <span class="label">ISSN: </span>
176
      <xsl:for-each select="marc:datafield[@tag=011]/marc:subfield[@code='a']">
177
        <span property="issn">
178
          <xsl:value-of select="."/>
179
          <xsl:choose>
180
            <xsl:when test="position()=last()">
181
              <xsl:text>.</xsl:text>
182
            </xsl:when>
183
            <xsl:otherwise>
184
              <xsl:text>; </xsl:text>
185
            </xsl:otherwise>
186
          </xsl:choose>
187
        </span>
188
      </xsl:for-each>
189
    </span>
190
  </xsl:if>
191
192
  <xsl:call-template name="tag_title">
193
    <xsl:with-param name="tag">225</xsl:with-param>
194
    <xsl:with-param name="label">Series</xsl:with-param>
195
    <xsl:with-param name="spanclass">series</xsl:with-param>
196
  </xsl:call-template>
197
198
  <xsl:if test="marc:datafield[@tag=676]">
199
    <span class="results_summary dewey">
200
      <span class="label">Dewey: </span>
201
      <xsl:for-each select="marc:datafield[@tag=676]">
202
        <xsl:value-of select="marc:subfield[@code='a']"/>
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='z']">
208
          <xsl:text>, </xsl:text>
209
          <xsl:value-of select="marc:subfield[@code='z']"/>
210
        </xsl:if>
140
        </xsl:if>
211
        <xsl:if test="not (position()=last())">
212
          <xsl:text> ; </xsl:text>
213
        </xsl:if>
214
      </xsl:for-each>
215
    </span>
216
  </xsl:if>
217
141
218
  <xsl:if test="marc:datafield[@tag=686]">
142
		<xsl:call-template name="tag_215" />
219
    <span class="results_summary classification">
143
		<xsl:if test="marc:controlfield[@tag=009]">
220
      <span class="label">Classification: </span>
144
			<span class="results_summary tag_009">
221
      <xsl:for-each select="marc:datafield[@tag=686]">
145
				<span class="label">Tag 009: </span>
222
        <xsl:value-of select="marc:subfield[@code='a']"/>
146
				<xsl:value-of select="marc:controlfield[@tag=009]"/>
223
        <xsl:if test="marc:subfield[@code='b']">
147
			</span>
224
          <xsl:text>, </xsl:text>
148
		</xsl:if>
225
          <xsl:value-of select="marc:subfield[@code='b']"/>
149
		<!-- Build ISBN -->
226
        </xsl:if>
150
		<xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
227
        <xsl:if test="marc:subfield[@code='c']">
151
			<span class="results_summary isbn">
228
          <xsl:text>, </xsl:text>
152
				<span class="label">ISBN: </span>
229
          <xsl:value-of select="marc:subfield[@code='c']"/>
153
				<xsl:for-each select="marc:datafield[@tag=010]/marc:subfield[@code='a']">
230
        </xsl:if>
154
					<span property="isbn">
231
        <xsl:if test="not (position()=last())"><xsl:text> ; </xsl:text></xsl:if>
155
						<xsl:value-of select="."/>
232
      </xsl:for-each>
156
						<xsl:choose>
233
    </span>
157
							<xsl:when test="position()=last()">
234
  </xsl:if>
158
								<xsl:text>.</xsl:text>
235
159
							</xsl:when>
236
  <xsl:if test="marc:datafield[@tag=327]">
160
							<xsl:otherwise>
237
    <span class="results_summary contents">
161
								<xsl:text>; </xsl:text>
238
      <span class="label">Contents note: </span>
162
							</xsl:otherwise>
239
      <xsl:for-each select="marc:datafield[@tag=327]">
163
						</xsl:choose>
240
        <xsl:call-template name="chopPunctuation">
164
					</span>
241
          <xsl:with-param name="chopString">
165
				</xsl:for-each>
242
            <xsl:call-template name="subfieldSelect">
166
			</span>
243
                <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
167
		</xsl:if>
244
                <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
168
		<!-- Build ISSN -->
245
                <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
169
		<xsl:if test="marc:datafield[@tag=011]/marc:subfield[@code='a']">
246
            </xsl:call-template>
170
			<span class="results_summary issn">
247
          </xsl:with-param>
171
				<span class="label">ISSN: </span>
248
        </xsl:call-template>
172
				<xsl:for-each select="marc:datafield[@tag=011]/marc:subfield[@code='a']">
249
      </xsl:for-each>
173
					<span property="issn">
250
    </span>
174
						<xsl:value-of select="."/>
251
  </xsl:if>
175
						<xsl:choose>
252
176
							<xsl:when test="position()=last()">
253
  <xsl:if test="marc:datafield[@tag=330]">
177
								<xsl:text>.</xsl:text>
254
    <span class="results_summary abstract">
178
							</xsl:when>
255
      <span class="label">Abstract: </span>
179
							<xsl:otherwise>
256
      <xsl:for-each select="marc:datafield[@tag=330]">
180
								<xsl:text>; </xsl:text>
257
        <xsl:value-of select="marc:subfield[@code='a']"/>
181
							</xsl:otherwise>
258
        <xsl:choose>
182
						</xsl:choose>
259
          <xsl:when test="position()=last()">
183
					</span>
260
            <xsl:text>.</xsl:text>
184
				</xsl:for-each>
261
          </xsl:when>
185
			</span>
262
          <xsl:otherwise>
186
		</xsl:if>
263
            <xsl:text>; </xsl:text>
187
		<xsl:call-template name="tag_title">
264
          </xsl:otherwise>
188
			<xsl:with-param name="tag">225</xsl:with-param>
265
        </xsl:choose>
189
			<xsl:with-param name="label">Series</xsl:with-param>
266
      </xsl:for-each>
190
			<xsl:with-param name="spanclass">series</xsl:with-param>
267
    </span>
191
		</xsl:call-template>
268
  </xsl:if>
192
		<xsl:if test="marc:datafield[@tag=676]">
269
193
			<span class="results_summary dewey">
270
  <xsl:if test="marc:datafield[@tag=317]">
194
				<span class="label">Dewey: </span>
271
    <span class="results_summary provenance">
195
				<xsl:for-each select="marc:datafield[@tag=676]">
272
      <span class="label">Provenance note: </span>
196
					<xsl:value-of select="marc:subfield[@code='a']"/>
273
      <xsl:for-each select="marc:datafield[@tag=317]">
197
					<xsl:if test="marc:subfield[@code='v']">
274
          <xsl:value-of select="marc:subfield[@code='a']"/>
198
						<xsl:text>, </xsl:text>
275
      </xsl:for-each>
199
						<xsl:value-of select="marc:subfield[@code='v']"/>
276
    </span>
200
					</xsl:if>
277
  </xsl:if>
201
					<xsl:if test="marc:subfield[@code='z']">
278
202
						<xsl:text>, </xsl:text>
279
  <xsl:if test="marc:datafield[@tag=320]">
203
						<xsl:value-of select="marc:subfield[@code='z']"/>
280
    <span class="results_summary bibliography">
204
					</xsl:if>
281
      <span class="label">Bibliography: </span>
205
					<xsl:if test="not (position()=last())">
282
      <xsl:for-each select="marc:datafield[@tag=320]">
206
						<xsl:text> ; </xsl:text>
283
        <xsl:value-of select="marc:subfield[@code='a']"/>
207
					</xsl:if>
284
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
208
				</xsl:for-each>
285
      </xsl:for-each>
209
			</span>
286
    </span>
210
		</xsl:if>
287
  </xsl:if>
211
		<xsl:if test="marc:datafield[@tag=686]">
288
212
			<span class="results_summary classification">
289
  <xsl:if test="marc:datafield[@tag=328]">
213
				<span class="label">Classification: </span>
290
    <span class="results_summary thesis">
214
				<xsl:for-each select="marc:datafield[@tag=686]">
291
      <span class="label">Thesis: </span>
215
					<xsl:value-of select="marc:subfield[@code='a']"/>
292
      <xsl:for-each select="marc:datafield[@tag=328]">
216
					<xsl:if test="marc:subfield[@code='b']">
293
        <xsl:value-of select="marc:subfield[@code='a']"/>
217
						<xsl:text>, </xsl:text>
294
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
218
						<xsl:value-of select="marc:subfield[@code='b']"/>
295
      </xsl:for-each>
219
					</xsl:if>
296
    </span>
220
					<xsl:if test="marc:subfield[@code='c']">
297
  </xsl:if>
221
						<xsl:text>, </xsl:text>
298
222
						<xsl:value-of select="marc:subfield[@code='c']"/>
299
  <xsl:if test="marc:datafield[@tag=333]">
223
					</xsl:if>
300
    <span class="results_summary audience">
224
					<xsl:if test="not (position()=last())">
301
      <span class="label">Audience: </span>
225
						<xsl:text> ; </xsl:text>
302
      <xsl:for-each select="marc:datafield[@tag=333]">
226
					</xsl:if>
303
        <xsl:value-of select="marc:subfield[@code='a']"/>
227
				</xsl:for-each>
304
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
228
			</span>
305
      </xsl:for-each>
229
		</xsl:if>
306
    </span>
230
		<xsl:if test="marc:datafield[@tag=327]">
307
  </xsl:if>
231
			<span class="results_summary contents">
308
232
				<span class="label">Contents note: </span>
309
  <xsl:if test="marc:datafield[@tag=955]">
233
				<xsl:for-each select="marc:datafield[@tag=327]">
310
    <span class="results_summary sudoc_serial_history">
234
					<xsl:call-template name="chopPunctuation">
311
      <span class="label">SUDOC serial history: </span>
235
						<xsl:with-param name="chopString">
312
      <xsl:for-each select="marc:datafield[@tag=955]">
236
							<xsl:call-template name="subfieldSelect">
313
        <xsl:value-of select="marc:subfield[@code='9']"/>:
237
								<xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
314
        <xsl:value-of select="marc:subfield[@code='r']"/>
238
								<xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
315
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
239
								<xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
316
      </xsl:for-each>
240
							</xsl:call-template>
317
    </span>
241
						</xsl:with-param>
318
  </xsl:if>
242
					</xsl:call-template>
319
243
				</xsl:for-each>
320
  <xsl:call-template name="tag_subject">
244
			</span>
321
    <xsl:with-param name="tag">600</xsl:with-param>
245
		</xsl:if>
322
    <xsl:with-param name="label">Subject - Personal Name</xsl:with-param>
246
		<xsl:if test="marc:datafield[@tag=330]">
323
  </xsl:call-template>
247
			<span class="results_summary abstract">
324
248
				<span class="label">Abstract: </span>
325
  <xsl:call-template name="tag_subject">
249
				<xsl:for-each select="marc:datafield[@tag=330]">
326
    <xsl:with-param name="tag">601</xsl:with-param>
250
					<xsl:value-of select="marc:subfield[@code='a']"/>
327
    <xsl:with-param name="label">Subject - Corporate Author</xsl:with-param>
251
					<xsl:choose>
328
  </xsl:call-template>
252
						<xsl:when test="position()=last()">
329
253
							<xsl:text>.</xsl:text>
330
  <xsl:call-template name="tag_subject">
254
						</xsl:when>
331
    <xsl:with-param name="tag">602</xsl:with-param>
255
						<xsl:otherwise>
332
    <xsl:with-param name="label">Subject - Family</xsl:with-param>
256
							<xsl:text>; </xsl:text>
333
  </xsl:call-template>
257
						</xsl:otherwise>
334
258
					</xsl:choose>
335
  <xsl:call-template name="tag_subject">
259
				</xsl:for-each>
336
    <xsl:with-param name="tag">604</xsl:with-param>
260
			</span>
337
    <xsl:with-param name="label">Subject - Author/Title</xsl:with-param>
261
		</xsl:if>
338
  </xsl:call-template>
262
		<xsl:if test="marc:datafield[@tag=317]">
339
263
			<span class="results_summary provenance">
340
  <xsl:call-template name="tag_subject">
264
				<span class="label">Provenance note: </span>
341
    <xsl:with-param name="tag">606</xsl:with-param>
265
				<xsl:for-each select="marc:datafield[@tag=317]">
342
    <xsl:with-param name="label">Subject - Topical Name</xsl:with-param>
266
					<xsl:value-of select="marc:subfield[@code='a']"/>
343
  </xsl:call-template>
267
				</xsl:for-each>
344
268
			</span>
345
  <xsl:call-template name="tag_subject">
269
		</xsl:if>
346
    <xsl:with-param name="tag">607</xsl:with-param>
270
		<xsl:if test="marc:datafield[@tag=320]">
347
    <xsl:with-param name="label">Subject - Geographical Name</xsl:with-param>
271
			<span class="results_summary bibliography">
348
  </xsl:call-template>
272
				<span class="label">Bibliography: </span>
349
273
				<xsl:for-each select="marc:datafield[@tag=320]">
350
  <xsl:call-template name="tag_subject">
274
					<xsl:value-of select="marc:subfield[@code='a']"/>
351
    <xsl:with-param name="tag">608</xsl:with-param>
275
					<xsl:choose>
352
    <xsl:with-param name="label">Subject - Form</xsl:with-param>
276
						<xsl:when test="position()=last()">
353
  </xsl:call-template>
277
							<xsl:text>.</xsl:text>
354
278
						</xsl:when>
355
  <xsl:call-template name="tag_subject">
279
						<xsl:otherwise>
356
    <xsl:with-param name="tag">610</xsl:with-param>
280
							<xsl:text>; </xsl:text>
357
    <xsl:with-param name="label">Subject</xsl:with-param>
281
						</xsl:otherwise>
358
  </xsl:call-template>
282
					</xsl:choose>
359
283
				</xsl:for-each>
360
  <xsl:call-template name="tag_subject">
284
			</span>
361
    <xsl:with-param name="tag">615</xsl:with-param>
285
		</xsl:if>
362
    <xsl:with-param name="label">Subject Category</xsl:with-param>
286
		<xsl:if test="marc:datafield[@tag=328]">
363
  </xsl:call-template>
287
			<span class="results_summary thesis">
364
288
				<span class="label">Thesis: </span>
365
  <xsl:call-template name="tag_subject">
289
				<xsl:for-each select="marc:datafield[@tag=328]">
366
    <xsl:with-param name="tag">616</xsl:with-param>
290
					<xsl:value-of select="marc:subfield[@code='a']"/>
367
    <xsl:with-param name="label">Trademark</xsl:with-param>
291
					<xsl:choose>
368
  </xsl:call-template>
292
						<xsl:when test="position()=last()">
369
293
							<xsl:text>.</xsl:text>
370
  <xsl:if test="marc:datafield[@tag=856]">
294
						</xsl:when>
371
    <span class="results_summary online_resources">
295
						<xsl:otherwise>
372
      <span class="label">Online Resources:</span>
296
							<xsl:text>; </xsl:text>
373
      <xsl:for-each select="marc:datafield[@tag=856]">
297
						</xsl:otherwise>
374
        <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
298
					</xsl:choose>
375
        <a>
299
				</xsl:for-each>
376
          <xsl:attribute name="href">
300
			</span>
377
            <xsl:value-of select="marc:subfield[@code='u']"/>
301
		</xsl:if>
378
          </xsl:attribute>
302
		<xsl:if test="marc:datafield[@tag=333]">
379
          <xsl:choose>
303
			<span class="results_summary audience">
380
            <xsl:when test="($Show856uAsImage='Details' or $Show856uAsImage='Both') and (substring($SubqText,1,6)='image/' or $SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
304
				<span class="label">Audience: </span>
381
              <xsl:element name="img"><xsl:attribute name="src"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute><xsl:attribute name="alt"><xsl:value-of select="marc:subfield[@code='y']"/></xsl:attribute><xsl:attribute name="height">100</xsl:attribute></xsl:element><xsl:text></xsl:text>
305
				<xsl:for-each select="marc:datafield[@tag=333]">
382
            </xsl:when>
306
					<xsl:value-of select="marc:subfield[@code='a']"/>
383
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
307
					<xsl:choose>
384
              <xsl:call-template name="subfieldSelect">
308
						<xsl:when test="position()=last()">
385
                <xsl:with-param name="codes">y3z</xsl:with-param>
309
							<xsl:text>.</xsl:text>
386
              </xsl:call-template>
310
						</xsl:when>
387
            </xsl:when>
311
						<xsl:otherwise>
388
            <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
312
							<xsl:text>; </xsl:text>
313
						</xsl:otherwise>
314
					</xsl:choose>
315
				</xsl:for-each>
316
			</span>
317
		</xsl:if>
318
		<xsl:if test="marc:datafield[@tag=955]">
319
			<span class="results_summary sudoc_serial_history">
320
				<span class="label">SUDOC serial history: </span>
321
				<xsl:for-each select="marc:datafield[@tag=955]">
322
					<xsl:value-of select="marc:subfield[@code='9']"/>:
323
324
					<xsl:value-of select="marc:subfield[@code='r']"/>
325
					<xsl:choose>
326
						<xsl:when test="position()=last()">
327
							<xsl:text>.</xsl:text>
328
						</xsl:when>
329
						<xsl:otherwise>
330
							<xsl:text>; </xsl:text>
331
						</xsl:otherwise>
332
					</xsl:choose>
333
				</xsl:for-each>
334
			</span>
335
		</xsl:if>
336
		<xsl:call-template name="tag_subject">
337
			<xsl:with-param name="tag">600</xsl:with-param>
338
			<xsl:with-param name="label">Subject - Personal Name</xsl:with-param>
339
		</xsl:call-template>
340
		<xsl:call-template name="tag_subject">
341
			<xsl:with-param name="tag">601</xsl:with-param>
342
			<xsl:with-param name="label">Subject - Corporate Author</xsl:with-param>
343
		</xsl:call-template>
344
		<xsl:call-template name="tag_subject">
345
			<xsl:with-param name="tag">602</xsl:with-param>
346
			<xsl:with-param name="label">Subject - Family</xsl:with-param>
347
		</xsl:call-template>
348
		<xsl:call-template name="tag_subject">
349
			<xsl:with-param name="tag">604</xsl:with-param>
350
			<xsl:with-param name="label">Subject - Author/Title</xsl:with-param>
351
		</xsl:call-template>
352
		<xsl:call-template name="tag_subject">
353
			<xsl:with-param name="tag">606</xsl:with-param>
354
			<xsl:with-param name="label">Subject - Topical Name</xsl:with-param>
355
		</xsl:call-template>
356
		<xsl:call-template name="tag_subject">
357
			<xsl:with-param name="tag">607</xsl:with-param>
358
			<xsl:with-param name="label">Subject - Geographical Name</xsl:with-param>
359
		</xsl:call-template>
360
		<xsl:call-template name="tag_subject">
361
			<xsl:with-param name="tag">608</xsl:with-param>
362
			<xsl:with-param name="label">Subject - Form</xsl:with-param>
363
		</xsl:call-template>
364
		<xsl:call-template name="tag_subject">
365
			<xsl:with-param name="tag">610</xsl:with-param>
366
			<xsl:with-param name="label">Subject</xsl:with-param>
367
		</xsl:call-template>
368
		<xsl:call-template name="tag_subject">
369
			<xsl:with-param name="tag">615</xsl:with-param>
370
			<xsl:with-param name="label">Subject Category</xsl:with-param>
371
		</xsl:call-template>
372
		<xsl:call-template name="tag_subject">
373
			<xsl:with-param name="tag">616</xsl:with-param>
374
			<xsl:with-param name="label">Trademark</xsl:with-param>
375
		</xsl:call-template>
376
		<xsl:if test="marc:datafield[@tag=856]">
377
			<span class="results_summary online_resources">
378
				<span class="label">Online Resources:</span>
379
				<xsl:for-each select="marc:datafield[@tag=856]">
380
					<xsl:variable name="SubqText">
381
						<xsl:value-of select="marc:subfield[@code='q']"/>
382
					</xsl:variable>
383
					<a>
384
						<xsl:attribute name="href">
385
							<xsl:value-of select="marc:subfield[@code='u']"/>
386
						</xsl:attribute>
387
						<xsl:choose>
388
							<xsl:when test="($Show856uAsImage='Details' or $Show856uAsImage='Both') and (substring($SubqText,1,6)='image/' or $SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
389
								<xsl:element name="img">
390
									<xsl:attribute name="src">
391
										<xsl:value-of select="marc:subfield[@code='u']"/>
392
									</xsl:attribute>
393
									<xsl:attribute name="alt">
394
										<xsl:value-of select="marc:subfield[@code='y']"/>
395
									</xsl:attribute>
396
									<xsl:attribute name="height">100</xsl:attribute>
397
								</xsl:element>
398
								<xsl:text></xsl:text>
399
							</xsl:when>
400
							<xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
401
								<xsl:call-template name="subfieldSelect">
402
									<xsl:with-param name="codes">y3z</xsl:with-param>
403
								</xsl:call-template>
404
							</xsl:when>
405
							<xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
389
              Click here to access online
406
              Click here to access online
390
            </xsl:when>
407
            </xsl:when>
391
          </xsl:choose>
408
						</xsl:choose>
392
        </a>
409
					</a>
393
        <xsl:choose>
410
					<xsl:choose>
394
          <xsl:when test="position()=last()"></xsl:when>
411
						<xsl:when test="position()=last()"></xsl:when>
395
          <xsl:otherwise> | </xsl:otherwise>
412
						<xsl:otherwise> | </xsl:otherwise>
396
        </xsl:choose>
413
					</xsl:choose>
397
      </xsl:for-each>
414
				</xsl:for-each>
398
    </span>
415
			</span>
399
  </xsl:if>
416
		</xsl:if>
400
</xsl:template>
417
	</xsl:template>
401
418
	<xsl:template name="nameABCDQ">
402
    <xsl:template name="nameABCDQ">
419
		<xsl:call-template name="chopPunctuation">
403
            <xsl:call-template name="chopPunctuation">
420
			<xsl:with-param name="chopString">
404
                <xsl:with-param name="chopString">
421
				<xsl:call-template name="subfieldSelect">
405
                    <xsl:call-template name="subfieldSelect">
422
					<xsl:with-param name="codes">aq</xsl:with-param>
406
                        <xsl:with-param name="codes">aq</xsl:with-param>
423
				</xsl:call-template>
407
                    </xsl:call-template>
424
			</xsl:with-param>
408
                </xsl:with-param>
425
			<xsl:with-param name="punctuation">
409
                <xsl:with-param name="punctuation">
426
				<xsl:text>:,;/ </xsl:text>
410
                    <xsl:text>:,;/ </xsl:text>
427
			</xsl:with-param>
411
                </xsl:with-param>
428
		</xsl:call-template>
412
            </xsl:call-template>
429
		<xsl:call-template name="termsOfAddress"/>
413
        <xsl:call-template name="termsOfAddress"/>
430
	</xsl:template>
414
    </xsl:template>
431
	<xsl:template name="nameABCDN">
415
432
		<xsl:for-each select="marc:subfield[@code='a']">
416
    <xsl:template name="nameABCDN">
433
			<xsl:call-template name="chopPunctuation">
417
        <xsl:for-each select="marc:subfield[@code='a']">
434
				<xsl:with-param name="chopString" select="."/>
418
                <xsl:call-template name="chopPunctuation">
435
			</xsl:call-template>
419
                    <xsl:with-param name="chopString" select="."/>
436
		</xsl:for-each>
420
                </xsl:call-template>
437
		<xsl:for-each select="marc:subfield[@code='b']">
421
        </xsl:for-each>
438
			<xsl:value-of select="."/>
422
        <xsl:for-each select="marc:subfield[@code='b']">
439
		</xsl:for-each>
423
                <xsl:value-of select="."/>
440
		<xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
424
        </xsl:for-each>
441
			<xsl:call-template name="subfieldSelect">
425
        <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
442
				<xsl:with-param name="codes">cdn</xsl:with-param>
426
                <xsl:call-template name="subfieldSelect">
443
			</xsl:call-template>
427
                    <xsl:with-param name="codes">cdn</xsl:with-param>
444
		</xsl:if>
428
                </xsl:call-template>
445
	</xsl:template>
429
        </xsl:if>
446
	<xsl:template name="nameACDEQ">
430
    </xsl:template>
447
		<xsl:call-template name="subfieldSelect">
431
448
			<xsl:with-param name="codes">acdeq</xsl:with-param>
432
    <xsl:template name="nameACDEQ">
449
		</xsl:call-template>
433
            <xsl:call-template name="subfieldSelect">
450
	</xsl:template>
434
                <xsl:with-param name="codes">acdeq</xsl:with-param>
451
	<xsl:template name="termsOfAddress">
435
            </xsl:call-template>
452
		<xsl:if test="marc:subfield[@code='b' or @code='c']">
436
    </xsl:template>
453
			<xsl:call-template name="chopPunctuation">
437
    <xsl:template name="termsOfAddress">
454
				<xsl:with-param name="chopString">
438
        <xsl:if test="marc:subfield[@code='b' or @code='c']">
455
					<xsl:call-template name="subfieldSelect">
439
            <xsl:call-template name="chopPunctuation">
456
						<xsl:with-param name="codes">bc</xsl:with-param>
440
                <xsl:with-param name="chopString">
457
					</xsl:call-template>
441
                    <xsl:call-template name="subfieldSelect">
458
				</xsl:with-param>
442
                        <xsl:with-param name="codes">bc</xsl:with-param>
459
			</xsl:call-template>
443
                    </xsl:call-template>
460
		</xsl:if>
444
                </xsl:with-param>
461
	</xsl:template>
445
            </xsl:call-template>
462
	<xsl:template name="part">
446
        </xsl:if>
463
		<xsl:variable name="partNumber">
447
    </xsl:template>
464
			<xsl:call-template name="specialSubfieldSelect">
448
465
				<xsl:with-param name="axis">n</xsl:with-param>
449
    <xsl:template name="part">
466
				<xsl:with-param name="anyCodes">n</xsl:with-param>
450
        <xsl:variable name="partNumber">
467
				<xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
451
            <xsl:call-template name="specialSubfieldSelect">
468
			</xsl:call-template>
452
                <xsl:with-param name="axis">n</xsl:with-param>
469
		</xsl:variable>
453
                <xsl:with-param name="anyCodes">n</xsl:with-param>
470
		<xsl:variable name="partName">
454
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
471
			<xsl:call-template name="specialSubfieldSelect">
455
            </xsl:call-template>
472
				<xsl:with-param name="axis">p</xsl:with-param>
456
        </xsl:variable>
473
				<xsl:with-param name="anyCodes">p</xsl:with-param>
457
        <xsl:variable name="partName">
474
				<xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
458
            <xsl:call-template name="specialSubfieldSelect">
475
			</xsl:call-template>
459
                <xsl:with-param name="axis">p</xsl:with-param>
476
		</xsl:variable>
460
                <xsl:with-param name="anyCodes">p</xsl:with-param>
477
		<xsl:if test="string-length(normalize-space($partNumber))">
461
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
478
			<xsl:call-template name="chopPunctuation">
462
            </xsl:call-template>
479
				<xsl:with-param name="chopString" select="$partNumber"/>
463
        </xsl:variable>
480
			</xsl:call-template>
464
        <xsl:if test="string-length(normalize-space($partNumber))">
481
		</xsl:if>
465
                <xsl:call-template name="chopPunctuation">
482
		<xsl:if test="string-length(normalize-space($partName))">
466
                    <xsl:with-param name="chopString" select="$partNumber"/>
483
			<xsl:call-template name="chopPunctuation">
467
                </xsl:call-template>
484
				<xsl:with-param name="chopString" select="$partName"/>
468
        </xsl:if>
485
			</xsl:call-template>
469
        <xsl:if test="string-length(normalize-space($partName))">
486
		</xsl:if>
470
                <xsl:call-template name="chopPunctuation">
487
	</xsl:template>
471
                    <xsl:with-param name="chopString" select="$partName"/>
488
	<xsl:template name="specialSubfieldSelect">
472
                </xsl:call-template>
489
		<xsl:param name="anyCodes"/>
473
        </xsl:if>
490
		<xsl:param name="axis"/>
474
    </xsl:template>
491
		<xsl:param name="beforeCodes"/>
475
492
		<xsl:param name="afterCodes"/>
476
    <xsl:template name="specialSubfieldSelect">
493
		<xsl:variable name="str">
477
        <xsl:param name="anyCodes"/>
494
			<xsl:for-each select="marc:subfield">
478
        <xsl:param name="axis"/>
495
				<xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
479
        <xsl:param name="beforeCodes"/>
496
					<xsl:value-of select="text()"/>
480
        <xsl:param name="afterCodes"/>
497
					<xsl:text></xsl:text>
481
        <xsl:variable name="str">
498
				</xsl:if>
482
            <xsl:for-each select="marc:subfield">
499
			</xsl:for-each>
483
                <xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
500
		</xsl:variable>
484
                    <xsl:value-of select="text()"/>
501
		<xsl:value-of select="substring($str,1,string-length($str)-1)"/>
485
                    <xsl:text> </xsl:text>
502
	</xsl:template>
486
                </xsl:if>
487
            </xsl:for-each>
488
        </xsl:variable>
489
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
490
    </xsl:template>
491
492
</xsl:stylesheet>
503
</xsl:stylesheet>
(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetResults.xsl (-74 / +65 lines)
Lines 1-81 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet>
2
<!DOCTYPE stylesheet>
4
5
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
3
<!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
6
<xsl:stylesheet version="1.0"
4
<xsl:stylesheet version="1.0"
7
  xmlns:marc="http://www.loc.gov/MARC21/slim"
5
	xmlns:marc="http://www.loc.gov/MARC21/slim"
8
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9
  xmlns:str="http://exslt.org/strings"
7
	xmlns:str="http://exslt.org/strings"
10
  exclude-result-prefixes="marc str">
8
  exclude-result-prefixes="marc str">
11
9
	<xsl:import href="UNIMARCslimUtils.xsl"/>
12
<xsl:import href="UNIMARCslimUtils.xsl"/>
10
	<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
11
	<xsl:template match="/">
14
12
		<xsl:apply-templates/>
15
<xsl:template match="/">
13
	</xsl:template>
16
  <xsl:apply-templates/>
14
	<xsl:template match="marc:record">
17
</xsl:template>
15
		<xsl:variable name="IntranetBiblioDefaultView" select="marc:sysprefs/marc:syspref[@name='IntranetBiblioDefaultView']"/>
18
16
		<xsl:variable name="leader" select="marc:leader"/>
19
<xsl:template match="marc:record">
17
		<xsl:variable name="leader6" select="substring($leader,7,1)"/>
20
  <xsl:variable name="IntranetBiblioDefaultView" select="marc:sysprefs/marc:syspref[@name='IntranetBiblioDefaultView']"/>
18
		<xsl:variable name="leader7" select="substring($leader,8,1)"/>
21
  <xsl:variable name="leader" select="marc:leader"/>
19
		<xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
22
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
20
		<xsl:variable name="isbn" select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
23
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
21
		<xsl:if test="marc:datafield[@tag=200]">
24
  <xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
22
			<xsl:for-each select="marc:datafield[@tag=200]">
25
  <xsl:variable name="isbn" select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
23
				<a>
26
24
					<xsl:attribute name="href">
27
  <xsl:if test="marc:datafield[@tag=200]">
25
						<xsl:call-template name="buildBiblioDefaultViewURL">
28
    <xsl:for-each select="marc:datafield[@tag=200]">
26
							<xsl:with-param name="IntranetBiblioDefaultView">
29
      <a>
27
								<xsl:value-of select="$IntranetBiblioDefaultView"/>
30
        <xsl:attribute name="href">
28
							</xsl:with-param>
31
          <xsl:call-template name="buildBiblioDefaultViewURL">
29
						</xsl:call-template>
32
            <xsl:with-param name="IntranetBiblioDefaultView">
30
						<xsl:value-of select="str:encode-uri($biblionumber, true())"/>
33
              <xsl:value-of select="$IntranetBiblioDefaultView"/>
31
					</xsl:attribute>
34
            </xsl:with-param>
32
					<xsl:attribute name="class">title</xsl:attribute>
35
          </xsl:call-template>
33
					<xsl:variable name="title" select="marc:subfield[@code='a']"/>
36
          <xsl:value-of select="str:encode-uri($biblionumber, true())"/>
34
					<xsl:variable name="ntitle"
37
        </xsl:attribute>
38
        <xsl:attribute name="class">title</xsl:attribute>
39
40
        <xsl:variable name="title" select="marc:subfield[@code='a']"/>
41
        <xsl:variable name="ntitle"
42
            select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
35
            select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
43
        <xsl:value-of select="$ntitle" />
36
					<xsl:value-of select="$ntitle" />
44
      </a>
37
				</a>
45
      <xsl:if test="marc:subfield[@code='e']">
38
				<xsl:if test="marc:subfield[@code='e']">
46
        <xsl:text> : </xsl:text>
39
					<xsl:text> : </xsl:text>
47
        <xsl:value-of select="marc:subfield[@code='e']"/>
40
					<xsl:value-of select="marc:subfield[@code='e']"/>
48
      </xsl:if>
41
				</xsl:if>
49
      <xsl:if test="marc:subfield[@code='b']">
42
				<xsl:if test="marc:subfield[@code='b']">
50
        <xsl:text> [</xsl:text>
43
					<xsl:text> [</xsl:text>
51
        <xsl:value-of select="marc:subfield[@code='b']"/>
44
					<xsl:value-of select="marc:subfield[@code='b']"/>
52
        <xsl:text>]</xsl:text>
45
					<xsl:text>]</xsl:text>
53
      </xsl:if>
46
				</xsl:if>
54
      <xsl:if test="marc:subfield[@code='h']">
47
				<xsl:if test="marc:subfield[@code='h']">
55
        <xsl:text> : </xsl:text>
48
					<xsl:text> : </xsl:text>
56
        <xsl:value-of select="marc:subfield[@code='h']"/>
49
					<xsl:value-of select="marc:subfield[@code='h']"/>
57
      </xsl:if>
50
				</xsl:if>
58
      <xsl:if test="marc:subfield[@code='i']">
51
				<xsl:if test="marc:subfield[@code='i']">
59
        <xsl:text> : </xsl:text>
52
					<xsl:text> : </xsl:text>
60
        <xsl:value-of select="marc:subfield[@code='i']"/>
53
					<xsl:value-of select="marc:subfield[@code='i']"/>
61
      </xsl:if>
54
				</xsl:if>
62
      <xsl:if test="marc:subfield[@code='f']">
55
				<xsl:if test="marc:subfield[@code='f']">
63
        <xsl:text> / </xsl:text>
56
					<xsl:text> / </xsl:text>
64
        <xsl:value-of select="marc:subfield[@code='f']"/>
57
					<xsl:value-of select="marc:subfield[@code='f']"/>
65
      </xsl:if>
58
				</xsl:if>
66
      <xsl:if test="marc:subfield[@code='g']">
59
				<xsl:if test="marc:subfield[@code='g']">
67
        <xsl:text> ; </xsl:text>
60
					<xsl:text> ; </xsl:text>
68
        <xsl:value-of select="marc:subfield[@code='g']"/>
61
					<xsl:value-of select="marc:subfield[@code='g']"/>
69
      </xsl:if>
62
				</xsl:if>
70
      <xsl:text> </xsl:text>
63
				<xsl:text></xsl:text>
71
    </xsl:for-each>
64
			</xsl:for-each>
72
  </xsl:if>
65
		</xsl:if>
73
66
		<xsl:call-template name="tag_4xx" />
74
  <xsl:call-template name="tag_4xx" />
67
		<xsl:if test="marc:datafield[@tag=210 or @tag=214]">
75
68
			<xsl:call-template name="tag_210-214" />
76
  <xsl:call-template name="tag_210" />
69
		</xsl:if>
77
70
		<xsl:call-template name="tag_215" />
78
  <xsl:call-template name="tag_215" />
71
	</xsl:template>
79
80
</xsl:template>
81
</xsl:stylesheet>
72
</xsl:stylesheet>
(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslimUtils.xsl (-306 / +620 lines)
Lines 1-135 Link Here
1
<?xml version='1.0'?>
1
<?xml version='1.0'?>
2
3
<!DOCTYPE stylesheet>
2
<!DOCTYPE stylesheet>
4
5
<xsl:stylesheet version="1.0"
3
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
4
	xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:items="http://www.koha-community.org/items"
5
	xmlns:items="http://www.koha-community.org/items"
8
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9
  xmlns:str="http://exslt.org/strings"
7
	xmlns:str="http://exslt.org/strings"
10
  exclude-result-prefixes="marc items str">
8
  exclude-result-prefixes="marc items str">
9
	<xsl:template name="datafield">
10
		<xsl:param name="tag"/>
11
		<xsl:param name="ind1">
12
			<xsl:text></xsl:text>
13
		</xsl:param>
14
		<xsl:param name="ind2">
15
			<xsl:text></xsl:text>
16
		</xsl:param>
17
		<xsl:param name="subfields"/>
18
		<xsl:element name="datafield">
19
			<xsl:attribute name="tag">
20
				<xsl:value-of select="$tag"/>
21
			</xsl:attribute>
22
			<xsl:attribute name="ind1">
23
				<xsl:value-of select="$ind1"/>
24
			</xsl:attribute>
25
			<xsl:attribute name="ind2">
26
				<xsl:value-of select="$ind2"/>
27
			</xsl:attribute>
28
			<xsl:copy-of select="$subfields"/>
29
		</xsl:element>
30
	</xsl:template>
31
	<xsl:template name="tag_210">
32
		<span class="results_summary publication">
33
			<span class="label">Publication: </span>
34
			<xsl:for-each select="marc:datafield[@tag=210]">
35
				<span>
36
					<xsl:call-template name="addClassRtl" />
37
					<xsl:for-each select="marc:subfield">
38
						<xsl:choose>
39
							<xsl:when test="@code='c' or @code='g'">
40
								<xsl:if test="position()>1">
41
									<xsl:text> : </xsl:text>
42
								</xsl:if>
43
								<xsl:value-of select="."/>
44
							</xsl:when>
45
							<xsl:otherwise>
46
								<xsl:if test="position()>1">
47
									<xsl:text>, </xsl:text>
48
								</xsl:if>
49
								<xsl:value-of select="."/>
50
							</xsl:otherwise>
51
						</xsl:choose>
52
					</xsl:for-each>
53
					<xsl:if test="not (position() = last())">
54
						<xsl:text> • </xsl:text>
55
					</xsl:if>
56
				</span>
57
			</xsl:for-each>
58
		</span>
59
	</xsl:template>
60
	<xsl:template name="tag_214">
61
		<xsl:for-each select="marc:datafield[@tag=214]">
62
			<xsl:sort select="@ind2" data-type="number" />
63
			<span class="results_summary publication">
64
				<span class="label">
65
					<xsl:choose>
66
						<xsl:when test="@ind2=1">Production:
67
     </xsl:when>
68
						<xsl:when test="@ind2=2">Distribution:
69
     </xsl:when>
70
						<xsl:when test="@ind2=3">Manufacture:
71
     </xsl:when>
72
						<xsl:when test="@ind2=4">
73
							<xsl:choose>
74
								<xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
75
     </xsl:when>
76
								<xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
77
     </xsl:when>
78
								<xsl:otherwise>Copyright date / protection date:
79
     </xsl:otherwise>
80
							</xsl:choose>
81
						</xsl:when>
82
						<xsl:otherwise>Publication:
83
     </xsl:otherwise>
84
					</xsl:choose>
85
				</span>
86
				<span>
87
					<xsl:call-template name="addClassRtl" />
88
					<xsl:for-each select="marc:subfield">
89
						<xsl:choose>
90
							<xsl:when test="@code='a'">
91
								<xsl:value-of select="."/>
92
								<xsl:if test="position() != last()">
93
									<xsl:text>: </xsl:text>
94
								</xsl:if>
95
							</xsl:when>
96
							<xsl:when test="@code='b'">
97
								<xsl:value-of select="."/>
98
								<xsl:if test="not(position()=1)">
99
									<xsl:text>, </xsl:text>
100
								</xsl:if>
101
							</xsl:when>
102
							<xsl:when test="@code='c'">
103
								<a>
104
									<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
105
									</xsl:attribute>
106
									<xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
107
										<xsl:text>"</xsl:text>
108
									</xsl:attribute>
109
									<xsl:value-of select="."/>
110
								</a>
111
							</xsl:when>
112
							<xsl:when test="@code='d'">
113
								<xsl:if test="not(position()=1)">
114
									<xsl:text>, </xsl:text>
115
								</xsl:if>
116
								<xsl:choose>
117
									<xsl:when test="substring(.,1,1)='C'">
118
										<xsl:value-of select="substring(.,2)"/>
119
									</xsl:when>
120
									<xsl:when test="substring(.,1,1)='P'">
121
										<xsl:value-of select="substring(.,2)"/>
122
									</xsl:when>
123
									<xsl:otherwise>
124
										<xsl:value-of select="."/>
125
									</xsl:otherwise>
126
								</xsl:choose>
127
							</xsl:when>
128
						</xsl:choose>
129
					</xsl:for-each>
130
				</span>
131
			</span>
132
		</xsl:for-each>
133
	</xsl:template>
134
	<xsl:template name="tag_210-214">
135
		<span class="results_summary publication">
136
			<xsl:if test="marc:datafield[@tag=210 or @tag=214]">
137
				<xsl:choose>
138
					<xsl:when test="marc:datafield[@tag=210 and @tag=214]">
139
						<xsl:for-each select="marc:datafield[@tag=214]">
140
							<xsl:if test="not (position() = 1)">
141
								<br/>
142
							</xsl:if>
143
							<span class="label">
144
								<xsl:choose>
145
									<xsl:when test="@ind2=1">Production:
146
							</xsl:when>
147
									<xsl:when test="@ind2=2">Distribution:
148
							</xsl:when>
149
									<xsl:when test="@ind2=3">Manufacture:
150
							</xsl:when>
151
									<xsl:when test="@ind2=4">
152
										<xsl:choose>
153
											<xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
154
							</xsl:when>
155
											<xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
156
							</xsl:when>
157
											<xsl:otherwise>Copyright date / protection date:
158
							</xsl:otherwise>
159
										</xsl:choose>
160
									</xsl:when>
161
									<xsl:otherwise>Publication:
162
							</xsl:otherwise>
163
								</xsl:choose>
164
							</span>
165
							<span class="valeur">
166
								<xsl:call-template name="addClassRtl" />
167
								<xsl:for-each select="marc:subfield">
168
									<xsl:choose>
169
										<xsl:when test="@code='a'">
170
											<xsl:value-of select="."/>
171
											<xsl:if test="position() != last()">
172
												<xsl:text>: </xsl:text>
173
											</xsl:if>
174
										</xsl:when>
175
										<xsl:when test="@code='b'">
176
											<xsl:value-of select="."/>
177
											<xsl:if test="position() != last()">
178
												<xsl:text>, </xsl:text>
179
											</xsl:if>
180
										</xsl:when>
181
										<xsl:when test="@code='c' or @code='g'">
182
											<a>
183
												<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
184
												</xsl:attribute>
185
												<xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
186
													<xsl:text>"</xsl:text>
187
												</xsl:attribute>
188
												<xsl:value-of select="."/>
189
											</a>
190
											<xsl:if test="position() != last()">
191
												<xsl:text>, </xsl:text>
192
											</xsl:if>
193
										</xsl:when>
194
										<xsl:when test="@code='d'">
195
											<xsl:value-of select="."/>
196
											<xsl:if test="position() != last()">
197
												<xsl:text>, </xsl:text>
198
											</xsl:if>
199
										</xsl:when>
200
									</xsl:choose>
201
								</xsl:for-each>
202
							</span>
203
						</xsl:for-each>
204
					</xsl:when>
205
					<xsl:when test="marc:datafield[@tag=214]">
206
						<xsl:for-each select="marc:datafield[@tag=214]">
207
							<xsl:if test="not (position() = 1)">
208
								<br/>
209
							</xsl:if>
210
							<span class="label">
211
								<xsl:choose>
212
									<xsl:when test="@ind2=1">Production:
213
							</xsl:when>
214
									<xsl:when test="@ind2=2">Distribution:
215
							</xsl:when>
216
									<xsl:when test="@ind2=3">Manufacture:
217
							</xsl:when>
218
									<xsl:when test="@ind2=4">
219
										<xsl:choose>
220
											<xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
221
							</xsl:when>
222
											<xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
223
							</xsl:when>
224
											<xsl:otherwise>Copyright date / protection date:
225
							</xsl:otherwise>
226
										</xsl:choose>
227
									</xsl:when>
228
									<xsl:otherwise>Publication:
229
							</xsl:otherwise>
230
								</xsl:choose>
231
							</span>
232
							<span class="valeur">
233
								<xsl:call-template name="addClassRtl" />
234
								<xsl:for-each select="marc:subfield">
235
									<xsl:choose>
236
										<xsl:when test="@code='a'">
237
											<xsl:value-of select="."/>
238
											<xsl:if test="position() != last()">
239
												<xsl:text>: </xsl:text>
240
											</xsl:if>
241
										</xsl:when>
242
										<xsl:when test="@code='b'">
243
											<xsl:value-of select="."/>
244
											<xsl:if test="position() != last()">
245
												<xsl:text>, </xsl:text>
246
											</xsl:if>
247
										</xsl:when>
248
										<xsl:when test="@code='c' or @code='g'">
249
											<a>
250
												<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
251
												</xsl:attribute>
252
												<xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
253
													<xsl:text>"</xsl:text>
254
												</xsl:attribute>
255
												<xsl:value-of select="."/>
256
											</a>
257
											<xsl:if test="position() != last()">
258
												<xsl:text>, </xsl:text>
259
											</xsl:if>
260
										</xsl:when>
261
										<xsl:when test="@code='d'">
262
											<xsl:value-of select="."/>
263
											<xsl:if test="position() != last()">
264
												<xsl:text>, </xsl:text>
265
											</xsl:if>
266
										</xsl:when>
267
									</xsl:choose>
268
								</xsl:for-each>
269
							</span>
270
						</xsl:for-each>
271
					</xsl:when>
272
					<xsl:when test="marc:datafield[@tag=210]">
273
						<xsl:for-each select="marc:datafield[@tag=210]">
274
							<xsl:if test="not (position() = 1)">
275
								<br/>
276
							</xsl:if>
277
							<span class="label">Publication: </span>
278
							<span class="valeur">
279
								<xsl:call-template name="addClassRtl" />
280
								<xsl:for-each select="marc:subfield">
281
									<xsl:choose>
282
										<xsl:when test="@code='a'">
283
											<xsl:value-of select="."/>
284
											<xsl:if test="position() != last()">
285
												<xsl:text>: </xsl:text>
286
											</xsl:if>
287
										</xsl:when>
288
										<xsl:when test="@code='b'">
289
											<xsl:value-of select="."/>
290
											<xsl:if test="position() != last()">
291
												<xsl:text>, </xsl:text>
292
											</xsl:if>
293
										</xsl:when>
294
										<xsl:when test="@code='c' or @code='g'">
295
											<a>
296
												<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
297
												</xsl:attribute>
298
												<xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
299
													<xsl:text>"</xsl:text>
300
												</xsl:attribute>
301
												<xsl:value-of select="."/>
302
											</a>
303
											<xsl:if test="position() != last()">
304
												<xsl:text>, </xsl:text>
305
											</xsl:if>
306
										</xsl:when>
307
										<xsl:when test="@code='d'">
308
											<xsl:value-of select="."/>
309
											<xsl:if test="position() != last()">
310
												<xsl:text>, </xsl:text>
311
											</xsl:if>
312
										</xsl:when>
313
									</xsl:choose>
314
								</xsl:for-each>
315
							</span>
316
						</xsl:for-each>
317
					</xsl:when>
318
				</xsl:choose>
319
			</xsl:if>
320
		</span>
321
	</xsl:template>
322
	<xsl:template name="tag_215">
323
		<xsl:for-each select="marc:datafield[@tag=215]">
324
			<span class="results_summary description">
325
				<span class="label">Description: </span>
326
				<xsl:if test="marc:subfield[@code='a']">
327
					<xsl:value-of select="marc:subfield[@code='a']"/>
328
				</xsl:if>
329
				<xsl:if test="marc:subfield[@code='c']"> :
330
331
332
333
334
335
336
337
					<xsl:value-of select="marc:subfield[@code='c']"/>
338
				</xsl:if>
339
				<xsl:if test="marc:subfield[@code='d']"> ;
340
341
342
343
344
345
346
347
					<xsl:value-of select="marc:subfield[@code='d']"/>
348
				</xsl:if>
349
				<xsl:if test="marc:subfield[@code='e']"> +
350
351
352
353
11
354
12
  <xsl:template name="datafield">
13
    <xsl:param name="tag"/>
14
    <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
15
    <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
16
    <xsl:param name="subfields"/>
17
    <xsl:element name="datafield">
18
      <xsl:attribute name="tag">
19
        <xsl:value-of select="$tag"/>
20
      </xsl:attribute>
21
      <xsl:attribute name="ind1">
22
        <xsl:value-of select="$ind1"/>
23
      </xsl:attribute>
24
      <xsl:attribute name="ind2">
25
       <xsl:value-of select="$ind2"/>
26
         </xsl:attribute>
27
       <xsl:copy-of select="$subfields"/>
28
    </xsl:element>
29
  </xsl:template>
30
31
  <xsl:template name="tag_210">
32
    <span class="results_summary publication">
33
      <span class="label">Publication: </span>
34
      <xsl:for-each select="marc:datafield[@tag=210]">
35
        <span>
36
          <xsl:call-template name="addClassRtl" />
37
          <xsl:for-each select="marc:subfield">
38
            <xsl:choose>
39
              <xsl:when test="@code='c' or @code='g'">
40
                <xsl:if test="position()>1">
41
                  <xsl:text> : </xsl:text>
42
                </xsl:if>
43
                <xsl:value-of select="."/>
44
              </xsl:when>
45
              <xsl:otherwise>
46
                <xsl:if test="position()>1">
47
                  <xsl:text>, </xsl:text>
48
                </xsl:if>
49
                <xsl:value-of select="."/>
50
              </xsl:otherwise>
51
            </xsl:choose>
52
          </xsl:for-each>
53
          <xsl:if test="not (position() = last())">
54
            <xsl:text> • </xsl:text>
55
          </xsl:if>
56
        </span>
57
      </xsl:for-each>
58
    </span>
59
  </xsl:template>
60
61
  <xsl:template name="tag_215">
62
    <xsl:for-each select="marc:datafield[@tag=215]">
63
      <span class="results_summary description">
64
        <span class="label">Description: </span>
65
        <xsl:if test="marc:subfield[@code='a']">
66
          <xsl:value-of select="marc:subfield[@code='a']"/>
67
        </xsl:if>
68
        <xsl:if test="marc:subfield[@code='c']"> :
69
          <xsl:value-of select="marc:subfield[@code='c']"/>
70
        </xsl:if>
71
        <xsl:if test="marc:subfield[@code='d']"> ;
72
          <xsl:value-of select="marc:subfield[@code='d']"/>
73
        </xsl:if>
74
        <xsl:if test="marc:subfield[@code='e']"> +
75
          <xsl:value-of select="marc:subfield[@code='e']"/>
76
        </xsl:if>
77
      </span>
78
    </xsl:for-each>
79
  </xsl:template>
80
355
356
357
					<xsl:value-of select="marc:subfield[@code='e']"/>
358
				</xsl:if>
359
			</span>
360
		</xsl:for-each>
361
	</xsl:template>
81
	<xsl:template name="tag_4xx">
362
	<xsl:template name="tag_4xx">
82
    <xsl:for-each select="marc:datafield[@tag=464 or @tag=461]">
363
		<xsl:for-each select="marc:datafield[@tag=464 or @tag=461]">
83
      <span class="results_summary linked_with">
364
			<span class="results_summary linked_with">
84
        <span class="label">Linked with: </span>
365
				<span class="label">Linked with: </span>
85
        <span class="value">
366
				<span class="value">
86
          <xsl:call-template name="addClassRtl" />
367
					<xsl:call-template name="addClassRtl" />
87
          <xsl:if test="marc:subfield[@code='t']">
368
					<xsl:if test="marc:subfield[@code='t']">
88
            <xsl:value-of select="marc:subfield[@code='t']"/>
369
						<xsl:value-of select="marc:subfield[@code='t']"/>
89
          </xsl:if>
370
					</xsl:if>
90
          <xsl:if test="marc:subfield[@code='e']"> :
371
					<xsl:if test="marc:subfield[@code='e']"> :
91
            <xsl:value-of select="marc:subfield[@code='e']"/>
372
92
          </xsl:if>
373
93
          <xsl:if test="marc:subfield[@code='f']"> /
374
94
            <xsl:value-of select="marc:subfield[@code='f']"/>
375
95
          </xsl:if>
376
96
          <xsl:if test="marc:subfield[@code='v']">,
377
97
            <xsl:value-of select="marc:subfield[@code='v']"/>
378
98
          </xsl:if>
379
						<xsl:value-of select="marc:subfield[@code='e']"/>
99
        </span>
380
					</xsl:if>
100
      </span>
381
					<xsl:if test="marc:subfield[@code='f']"> /
101
    </xsl:for-each>
382
102
  </xsl:template>
383
384
385
386
387
103
388
389
						<xsl:value-of select="marc:subfield[@code='f']"/>
390
					</xsl:if>
391
					<xsl:if test="marc:subfield[@code='v']">,
392
393
394
395
396
397
398
399
						<xsl:value-of select="marc:subfield[@code='v']"/>
400
					</xsl:if>
401
				</span>
402
			</span>
403
		</xsl:for-each>
404
	</xsl:template>
104
	<xsl:template name="subfieldSelect">
405
	<xsl:template name="subfieldSelect">
105
		<xsl:param name="codes"/>
406
		<xsl:param name="codes"/>
106
		<xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
407
		<xsl:param name="delimeter">
408
			<xsl:text></xsl:text>
409
		</xsl:param>
107
		<xsl:param name="subdivCodes"/>
410
		<xsl:param name="subdivCodes"/>
108
		<xsl:param name="subdivDelimiter"/>
411
		<xsl:param name="subdivDelimiter"/>
109
    <xsl:param name="urlencode"/>
412
		<xsl:param name="urlencode"/>
110
		<xsl:variable name="str">
413
		<xsl:variable name="str">
111
			<xsl:for-each select="marc:subfield">
414
			<xsl:for-each select="marc:subfield">
112
				<xsl:if test="contains($codes, @code)">
415
				<xsl:if test="contains($codes, @code)">
113
                    <xsl:if test="contains($subdivCodes, @code)">
416
					<xsl:if test="contains($subdivCodes, @code)">
114
                        <xsl:value-of select="$subdivDelimiter"/>
417
						<xsl:value-of select="$subdivDelimiter"/>
115
                    </xsl:if>
418
					</xsl:if>
116
					<xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
419
					<xsl:value-of select="text()"/>
420
					<xsl:value-of select="$delimeter"/>
117
				</xsl:if>
421
				</xsl:if>
118
			</xsl:for-each>
422
			</xsl:for-each>
119
		</xsl:variable>
423
		</xsl:variable>
120
    <xsl:choose>
424
		<xsl:choose>
121
      <xsl:when test="$urlencode=1">
425
			<xsl:when test="$urlencode=1">
122
        <xsl:value-of select="str:encode-uri(substring($str,1,string-length($str)-string-length($delimeter)), true())"/>
426
				<xsl:value-of select="str:encode-uri(substring($str,1,string-length($str)-string-length($delimeter)), true())"/>
123
      </xsl:when>
427
			</xsl:when>
124
      <xsl:otherwise>
428
			<xsl:otherwise>
125
        <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
429
				<xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
126
      </xsl:otherwise>
430
			</xsl:otherwise>
127
    </xsl:choose>
431
		</xsl:choose>
128
	</xsl:template>
432
	</xsl:template>
129
130
	<xsl:template name="buildSpaces">
433
	<xsl:template name="buildSpaces">
131
		<xsl:param name="spaces"/>
434
		<xsl:param name="spaces"/>
132
		<xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
435
		<xsl:param name="char">
436
			<xsl:text></xsl:text>
437
		</xsl:param>
133
		<xsl:if test="$spaces>0">
438
		<xsl:if test="$spaces>0">
134
			<xsl:value-of select="$char"/>
439
			<xsl:value-of select="$char"/>
135
			<xsl:call-template name="buildSpaces">
440
			<xsl:call-template name="buildSpaces">
Lines 138-173 Link Here
138
			</xsl:call-template>
443
			</xsl:call-template>
139
		</xsl:if>
444
		</xsl:if>
140
	</xsl:template>
445
	</xsl:template>
141
446
	<xsl:template name="buildBiblioDefaultViewURL">
142
  <xsl:template name="buildBiblioDefaultViewURL">
447
		<xsl:param name="IntranetBiblioDefaultView"/>
143
      <xsl:param name="IntranetBiblioDefaultView"/>
448
		<xsl:choose>
144
      <xsl:choose>
449
			<xsl:when test="$IntranetBiblioDefaultView='normal'">
145
          <xsl:when test="$IntranetBiblioDefaultView='normal'">
450
				<xsl:text>/cgi-bin/koha/catalogue/detail.pl?biblionumber=</xsl:text>
146
              <xsl:text>/cgi-bin/koha/catalogue/detail.pl?biblionumber=</xsl:text>
451
			</xsl:when>
147
          </xsl:when>
452
			<xsl:when test="$IntranetBiblioDefaultView='isbd'">
148
          <xsl:when test="$IntranetBiblioDefaultView='isbd'">
453
				<xsl:text>/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=</xsl:text>
149
              <xsl:text>/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=</xsl:text>
454
			</xsl:when>
150
          </xsl:when>
455
			<xsl:when test="$IntranetBiblioDefaultView='labeled_marc'">
151
          <xsl:when test="$IntranetBiblioDefaultView='labeled_marc'">
456
				<xsl:text>/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=</xsl:text>
152
              <xsl:text>/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=</xsl:text>
457
			</xsl:when>
153
          </xsl:when>
458
			<xsl:when test="$IntranetBiblioDefaultView='marc'">
154
          <xsl:when test="$IntranetBiblioDefaultView='marc'">
459
				<xsl:text>/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=</xsl:text>
155
              <xsl:text>/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=</xsl:text>
460
			</xsl:when>
156
          </xsl:when>
461
			<xsl:otherwise>
157
          <xsl:otherwise>
462
				<xsl:text>/cgi-bin/koha/catalogue/detail.pl?biblionumber=</xsl:text>
158
              <xsl:text>/cgi-bin/koha/catalogue/detail.pl?biblionumber=</xsl:text>
463
			</xsl:otherwise>
159
          </xsl:otherwise>
464
		</xsl:choose>
160
      </xsl:choose>
465
	</xsl:template>
161
  </xsl:template>
162
163
	<xsl:template name="chopSpecialCharacters">
466
	<xsl:template name="chopSpecialCharacters">
164
        <xsl:param name="title" />
467
		<xsl:param name="title" />
165
        <xsl:variable name="ntitle"
468
		<xsl:variable name="ntitle"
166
             select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
469
             select="translate($title, '&#x0098;&#x009C;&#xC29C;&#xC29B;&#xC298;&#xC288;&#xC289;','')"/>
167
        <xsl:value-of select="$ntitle" />
470
		<xsl:value-of select="$ntitle" />
168
    </xsl:template>
471
	</xsl:template>
169
170
171
	<xsl:template name="chopPunctuation">
472
	<xsl:template name="chopPunctuation">
172
		<xsl:param name="chopString"/>
473
		<xsl:param name="chopString"/>
173
		<xsl:variable name="length" select="string-length($chopString)"/>
474
		<xsl:variable name="length" select="string-length($chopString)"/>
Lines 179-353 Link Here
179
				</xsl:call-template>
480
				</xsl:call-template>
180
			</xsl:when>
481
			</xsl:when>
181
			<xsl:when test="not($chopString)"/>
482
			<xsl:when test="not($chopString)"/>
182
			<xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
483
			<xsl:otherwise>
484
				<xsl:value-of select="$chopString"/>
485
			</xsl:otherwise>
183
		</xsl:choose>
486
		</xsl:choose>
184
    <xsl:text> </xsl:text>
487
		<xsl:text></xsl:text>
185
	</xsl:template>
488
	</xsl:template>
186
187
	<xsl:template name="addClassRtl">
489
	<xsl:template name="addClassRtl">
188
    <xsl:variable name="lang" select="marc:subfield[@code='7']" />
490
		<xsl:variable name="lang" select="marc:subfield[@code='7']" />
189
    <xsl:if test="$lang = 'ha' or $lang = 'Hebrew' or $lang = 'fa' or $lang = 'Arabe'">
491
		<xsl:if test="$lang = 'ha' or $lang = 'Hebrew' or $lang = 'fa' or $lang = 'Arabe'">
190
      <xsl:attribute name="class">rtl</xsl:attribute>
492
			<xsl:attribute name="class">rtl</xsl:attribute>
191
    </xsl:if>
493
		</xsl:if>
192
  </xsl:template>
494
	</xsl:template>
193
495
	<xsl:template name="tag_title">
194
  <xsl:template name="tag_title">
496
		<xsl:param name="tag" />
195
    <xsl:param name="tag" />
497
		<xsl:param name="label" />
196
    <xsl:param name="label" />
498
		<xsl:param name="spanclass" />
197
    <xsl:param name="spanclass" />
499
		<xsl:if test="marc:datafield[@tag=$tag]">
198
    <xsl:if test="marc:datafield[@tag=$tag]">
500
			<span class="results_summary {$spanclass}">
199
      <span class="results_summary {$spanclass}">
501
				<span class="label">
200
        <span class="label">
502
					<xsl:value-of select="$label"/>
201
          <xsl:value-of select="$label"/>
503
					<xsl:text>: </xsl:text>
202
          <xsl:text>: </xsl:text>
504
				</span>
203
        </span>
505
				<xsl:for-each select="marc:datafield[@tag=$tag]">
204
        <xsl:for-each select="marc:datafield[@tag=$tag]">
506
					<xsl:value-of select="marc:subfield[@code='a']" />
205
          <xsl:value-of select="marc:subfield[@code='a']" />
507
					<xsl:if test="marc:subfield[@code='d']">
206
          <xsl:if test="marc:subfield[@code='d']">
508
						<xsl:text> : </xsl:text>
207
            <xsl:text> : </xsl:text>
509
						<xsl:value-of select="marc:subfield[@code='e']"/>
208
            <xsl:value-of select="marc:subfield[@code='e']"/>
510
					</xsl:if>
209
          </xsl:if>
511
					<xsl:if test="marc:subfield[@code='e']">
210
          <xsl:if test="marc:subfield[@code='e']">
512
						<xsl:for-each select="marc:subfield[@code='e']">
211
            <xsl:for-each select="marc:subfield[@code='e']">
513
							<xsl:text></xsl:text>
212
              <xsl:text> </xsl:text>
514
							<xsl:value-of select="."/>
213
              <xsl:value-of select="."/>
515
						</xsl:for-each>
214
            </xsl:for-each>
516
					</xsl:if>
215
          </xsl:if>
517
					<xsl:if test="marc:subfield[@code='f']">
216
          <xsl:if test="marc:subfield[@code='f']">
518
						<xsl:text> / </xsl:text>
217
            <xsl:text> / </xsl:text>
519
						<xsl:value-of select="marc:subfield[@code='f']"/>
218
            <xsl:value-of select="marc:subfield[@code='f']"/>
520
					</xsl:if>
219
          </xsl:if>
521
					<xsl:if test="marc:subfield[@code='h']">
220
          <xsl:if test="marc:subfield[@code='h']">
522
						<xsl:text>, </xsl:text>
221
            <xsl:text>, </xsl:text>
523
						<xsl:value-of select="marc:subfield[@code='h']"/>
222
            <xsl:value-of select="marc:subfield[@code='h']"/>
524
					</xsl:if>
223
          </xsl:if>
525
					<xsl:if test="marc:subfield[@code='i']">
224
          <xsl:if test="marc:subfield[@code='i']">
526
						<xsl:text>, </xsl:text>
225
            <xsl:text>, </xsl:text>
527
						<xsl:value-of select="marc:subfield[@code='i']"/>
226
            <xsl:value-of select="marc:subfield[@code='i']"/>
528
					</xsl:if>
227
          </xsl:if>
529
					<xsl:if test="marc:subfield[@code='v']">
228
          <xsl:if test="marc:subfield[@code='v']">
530
						<xsl:text>, </xsl:text>
229
            <xsl:text>, </xsl:text>
531
						<xsl:value-of select="marc:subfield[@code='v']"/>
230
            <xsl:value-of select="marc:subfield[@code='v']"/>
532
					</xsl:if>
231
          </xsl:if>
533
					<xsl:if test="marc:subfield[@code='x']">
232
          <xsl:if test="marc:subfield[@code='x']">
534
						<xsl:text>, </xsl:text>
233
            <xsl:text>, </xsl:text>
535
						<xsl:value-of select="marc:subfield[@code='x']"/>
234
            <xsl:value-of select="marc:subfield[@code='x']"/>
536
					</xsl:if>
235
          </xsl:if>
537
					<xsl:if test="marc:subfield[@code='z']">
236
          <xsl:if test="marc:subfield[@code='z']">
538
						<xsl:text>, </xsl:text>
237
            <xsl:text>, </xsl:text>
539
						<xsl:value-of select="marc:subfield[@code='z']"/>
238
            <xsl:value-of select="marc:subfield[@code='z']"/>
540
					</xsl:if>
239
          </xsl:if>
541
				</xsl:for-each>
240
        </xsl:for-each>
542
			</span>
241
      </span>
543
		</xsl:if>
242
    </xsl:if>
544
	</xsl:template>
243
  </xsl:template>
545
	<xsl:template name="tag_subject">
244
546
		<xsl:param name="tag" />
245
  <xsl:template name="tag_subject">
547
		<xsl:param name="label" />
246
    <xsl:param name="tag" />
548
		<xsl:param name="spanclass"/>
247
    <xsl:param name="label" />
549
		<xsl:if test="marc:datafield[@tag=$tag]">
248
    <xsl:param name="spanclass"/>
550
			<span class="results_summary subjects {$spanclass}">
249
    <xsl:if test="marc:datafield[@tag=$tag]">
551
				<span class="label">
250
      <span class="results_summary subjects {$spanclass}">
552
					<xsl:value-of select="$label"/>
251
        <span class="label">
553
					<xsl:text>: </xsl:text>
252
          <xsl:value-of select="$label"/>
554
				</span>
253
          <xsl:text>: </xsl:text>
555
				<xsl:for-each select="marc:datafield[@tag=$tag]">
254
        </span>
556
					<a>
255
        <xsl:for-each select="marc:datafield[@tag=$tag]">
557
						<xsl:choose>
256
          <a>
558
							<xsl:when test="marc:subfield[@code=9]">
257
            <xsl:choose>
559
								<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:
258
              <xsl:when test="marc:subfield[@code=9]">
560
259
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute>
561
260
              </xsl:when>
562
261
              <xsl:otherwise>
563
262
                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su:<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/></xsl:attribute>
263
              </xsl:otherwise>
264
            </xsl:choose>
265
            <xsl:call-template name="chopPunctuation">
266
              <xsl:with-param name="chopString">
267
                <xsl:call-template name="subfieldSelect">
268
                    <xsl:with-param name="codes">abcdjptvxyz</xsl:with-param>
269
                    <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
270
                    <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
271
                </xsl:call-template>
272
              </xsl:with-param>
273
            </xsl:call-template>
274
          </a>
275
          <xsl:if test="not (position()=last())">
276
            <xsl:text> | </xsl:text>
277
          </xsl:if>
278
        </xsl:for-each>
279
      </span>
280
    </xsl:if>
281
  </xsl:template>
282
283
  <xsl:template name="tag_7xx">
284
    <xsl:param name="tag" />
285
    <xsl:param name="label" />
286
    <xsl:param name="spanclass" />
287
    <xsl:if test="marc:datafield[@tag=$tag]">
288
      <span class="results_summary author {$spanclass}">
289
        <span class="label">
290
          <xsl:value-of select="$label" />
291
          <xsl:text>: </xsl:text>
292
        </span>
293
        <span class="value">
294
          <xsl:for-each select="marc:datafield[@tag=$tag]">
295
            <xsl:call-template name="addClassRtl" />
296
            <a>
297
              <xsl:choose>
298
                <xsl:when test="marc:subfield[@code=9]">
299
                  <xsl:attribute name="href">
300
                    <xsl:text>/cgi-bin/koha/catalogue/search.pl?q=an:</xsl:text>
301
                    <xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/>
302
                  </xsl:attribute>
303
                </xsl:when>
304
                <xsl:otherwise>
305
                    <xsl:attribute name="href">
306
                      <xsl:text>/cgi-bin/koha/catalogue/search.pl?q=au:</xsl:text>
307
                      <xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>
308
                      <xsl:text>%20</xsl:text>
309
                      <xsl:value-of select="str:encode-uri(marc:subfield[@code='b'], true())"/>
310
                  </xsl:attribute>
311
                </xsl:otherwise>
312
              </xsl:choose>
313
              <xsl:if test="marc:subfield[@code='a']">
314
                <xsl:value-of select="marc:subfield[@code='a']"/>
315
              </xsl:if>
316
              <xsl:if test="marc:subfield[@code='b']">
317
                <xsl:text>, </xsl:text>
318
                <xsl:value-of select="marc:subfield[@code='b']"/>
319
              </xsl:if>
320
              <xsl:if test="marc:subfield[@code='c']">
321
                <xsl:text>, </xsl:text>
322
                <xsl:value-of select="marc:subfield[@code='c']"/>
323
              </xsl:if>
324
              <xsl:if test="marc:subfield[@code='d']">
325
                <xsl:text> </xsl:text>
326
                <xsl:value-of select="marc:subfield[@code='d']"/>
327
              </xsl:if>
328
              <xsl:if test="marc:subfield[@code='f']">
329
                <span dir="ltr">
330
                <xsl:text> (</xsl:text>
331
                <xsl:value-of select="marc:subfield[@code='f']"/>
332
                <xsl:text>)</xsl:text>
333
                </span>
334
              </xsl:if>
335
              <xsl:if test="marc:subfield[@code='g']">
336
                <xsl:text> </xsl:text>
337
                <xsl:value-of select="marc:subfield[@code='g']"/>
338
              </xsl:if>
339
              <xsl:if test="marc:subfield[@code='p']">
340
                <xsl:text> </xsl:text>
341
                <xsl:value-of select="marc:subfield[@code='p']"/>
342
              </xsl:if>
343
            </a>
344
            <xsl:if test="not (position() = last())">
345
              <xsl:text> ; </xsl:text>
346
            </xsl:if>
347
          </xsl:for-each>
348
        </span>
349
      </span>
350
    </xsl:if>
351
  </xsl:template>
352
564
565
566
									<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/>
567
								</xsl:attribute>
568
							</xsl:when>
569
							<xsl:otherwise>
570
								<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=su:
571
572
573
574
575
576
577
									<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>
578
								</xsl:attribute>
579
							</xsl:otherwise>
580
						</xsl:choose>
581
						<xsl:call-template name="chopPunctuation">
582
							<xsl:with-param name="chopString">
583
								<xsl:call-template name="subfieldSelect">
584
									<xsl:with-param name="codes">abcdjptvxyz</xsl:with-param>
585
									<xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
586
									<xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
587
								</xsl:call-template>
588
							</xsl:with-param>
589
						</xsl:call-template>
590
					</a>
591
					<xsl:if test="not (position()=last())">
592
						<xsl:text> | </xsl:text>
593
					</xsl:if>
594
				</xsl:for-each>
595
			</span>
596
		</xsl:if>
597
	</xsl:template>
598
	<xsl:template name="tag_7xx">
599
		<xsl:param name="tag" />
600
		<xsl:param name="label" />
601
		<xsl:param name="spanclass" />
602
		<xsl:if test="marc:datafield[@tag=$tag]">
603
			<span class="results_summary author {$spanclass}">
604
				<span class="label">
605
					<xsl:value-of select="$label" />
606
					<xsl:text>: </xsl:text>
607
				</span>
608
				<span class="value">
609
					<xsl:for-each select="marc:datafield[@tag=$tag]">
610
						<xsl:call-template name="addClassRtl" />
611
						<a>
612
							<xsl:choose>
613
								<xsl:when test="marc:subfield[@code=9]">
614
									<xsl:attribute name="href">
615
										<xsl:text>/cgi-bin/koha/catalogue/search.pl?q=an:</xsl:text>
616
										<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/>
617
									</xsl:attribute>
618
								</xsl:when>
619
								<xsl:otherwise>
620
									<xsl:attribute name="href">
621
										<xsl:text>/cgi-bin/koha/catalogue/search.pl?q=au:</xsl:text>
622
										<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>
623
										<xsl:text>%20</xsl:text>
624
										<xsl:value-of select="str:encode-uri(marc:subfield[@code='b'], true())"/>
625
									</xsl:attribute>
626
								</xsl:otherwise>
627
							</xsl:choose>
628
							<xsl:if test="marc:subfield[@code='a']">
629
								<xsl:value-of select="marc:subfield[@code='a']"/>
630
							</xsl:if>
631
							<xsl:if test="marc:subfield[@code='b']">
632
								<xsl:text>, </xsl:text>
633
								<xsl:value-of select="marc:subfield[@code='b']"/>
634
							</xsl:if>
635
							<xsl:if test="marc:subfield[@code='c']">
636
								<xsl:text>, </xsl:text>
637
								<xsl:value-of select="marc:subfield[@code='c']"/>
638
							</xsl:if>
639
							<xsl:if test="marc:subfield[@code='d']">
640
								<xsl:text></xsl:text>
641
								<xsl:value-of select="marc:subfield[@code='d']"/>
642
							</xsl:if>
643
							<xsl:if test="marc:subfield[@code='f']">
644
								<span dir="ltr">
645
									<xsl:text> (</xsl:text>
646
									<xsl:value-of select="marc:subfield[@code='f']"/>
647
									<xsl:text>)</xsl:text>
648
								</span>
649
							</xsl:if>
650
							<xsl:if test="marc:subfield[@code='g']">
651
								<xsl:text></xsl:text>
652
								<xsl:value-of select="marc:subfield[@code='g']"/>
653
							</xsl:if>
654
							<xsl:if test="marc:subfield[@code='p']">
655
								<xsl:text></xsl:text>
656
								<xsl:value-of select="marc:subfield[@code='p']"/>
657
							</xsl:if>
658
						</a>
659
						<xsl:if test="not (position() = last())">
660
							<xsl:text> ; </xsl:text>
661
						</xsl:if>
662
					</xsl:for-each>
663
				</span>
664
			</span>
665
		</xsl:if>
666
	</xsl:template>
353
</xsl:stylesheet>
667
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/xslt/UNIMARCslim2OPACDetail.xsl (+651 lines)
Line 0 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet>
4
5
<xsl:stylesheet version="1.0"
6
  xmlns:marc="http://www.loc.gov/MARC21/slim"
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8
  xmlns:str="http://exslt.org/strings"
9
  exclude-result-prefixes="marc str">
10
11
<xsl:import href="UNIMARCslimUtils.xsl"/>
12
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
13
<xsl:template match="/">
14
  <xsl:apply-templates/>
15
</xsl:template>
16
17
<xsl:template match="marc:record">
18
  <xsl:variable name="leader" select="marc:leader"/>
19
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
20
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
21
  <xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
22
  <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/>
23
  <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
24
  <xsl:variable name="URLLinkText" select="marc:sysprefs/marc:syspref[@name='URLLinkText']"/>
25
26
  <xsl:if test="marc:datafield[@tag=200]">
27
    <xsl:for-each select="marc:datafield[@tag=200]">
28
      <h2 class="title">
29
        <xsl:call-template name="addClassRtl" />
30
        <xsl:for-each select="marc:subfield">
31
          <xsl:choose>
32
            <xsl:when test="@code='a'">
33
              <xsl:variable name="title" select="."/>
34
              <xsl:variable name="ntitle"
35
               select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
36
              <xsl:value-of select="$ntitle" />
37
            </xsl:when>
38
            <xsl:when test="@code='b'">
39
              <xsl:text> [</xsl:text>
40
              <xsl:value-of select="."/>
41
              <xsl:text>]</xsl:text>
42
            </xsl:when>
43
            <xsl:when test="@code='d'">
44
              <xsl:text> = </xsl:text>
45
              <xsl:value-of select="."/>
46
            </xsl:when>
47
            <xsl:when test="@code='e'">
48
              <xsl:text> : </xsl:text>
49
              <xsl:value-of select="."/>
50
            </xsl:when>
51
            <xsl:when test="@code='f'">
52
              <xsl:text> / </xsl:text>
53
              <xsl:value-of select="."/>
54
            </xsl:when>
55
            <xsl:when test="@code='g'">
56
              <xsl:text> ; </xsl:text>
57
              <xsl:value-of select="."/>
58
            </xsl:when>
59
            <xsl:otherwise>
60
              <xsl:text>, </xsl:text>
61
              <xsl:value-of select="."/>
62
            </xsl:otherwise>
63
          </xsl:choose>
64
        </xsl:for-each>
65
      </h2>
66
    </xsl:for-each>
67
  </xsl:if>
68
69
  <xsl:call-template name="tag_title">
70
    <xsl:with-param name="tag">454</xsl:with-param>
71
    <xsl:with-param name="label">Translation of</xsl:with-param>
72
    <xsl:with-param name="spanclass">original_title</xsl:with-param>
73
  </xsl:call-template>
74
75
  <xsl:call-template name="tag_title">
76
    <xsl:with-param name="tag">461</xsl:with-param>
77
    <xsl:with-param name="label">Set Level</xsl:with-param>
78
    <xsl:with-param name="spanclass">set_level</xsl:with-param>
79
  </xsl:call-template>
80
81
  <xsl:call-template name="tag_title">
82
    <xsl:with-param name="tag">464</xsl:with-param>
83
    <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
84
    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
85
  </xsl:call-template>
86
87
  <xsl:call-template name="tag_7xx">
88
    <xsl:with-param name="tag">700</xsl:with-param>
89
    <xsl:with-param name="label">Main Author</xsl:with-param>
90
    <xsl:with-param name="spanclass">main_author</xsl:with-param>
91
  </xsl:call-template>
92
93
  <xsl:call-template name="tag_7xx">
94
    <xsl:with-param name="tag">710</xsl:with-param>
95
    <xsl:with-param name="label">Corporate Author (Main)</xsl:with-param>
96
    <xsl:with-param name="spanclass">corporate_main_author</xsl:with-param>
97
  </xsl:call-template>
98
99
  <xsl:call-template name="tag_7xx">
100
    <xsl:with-param name="tag">701</xsl:with-param>
101
    <xsl:with-param name="label">Coauthor</xsl:with-param>
102
    <xsl:with-param name="spanclass">coauthor</xsl:with-param>
103
  </xsl:call-template>
104
105
  <xsl:call-template name="tag_7xx">
106
    <xsl:with-param name="tag">702</xsl:with-param>
107
    <xsl:with-param name="label">Secondary Author</xsl:with-param>
108
    <xsl:with-param name="spanclass">secondary_author</xsl:with-param>
109
  </xsl:call-template>
110
111
  <xsl:call-template name="tag_7xx">
112
    <xsl:with-param name="tag">711</xsl:with-param>
113
    <xsl:with-param name="label">Corporate Author (Coauthor)</xsl:with-param>
114
    <xsl:with-param name="spanclass">corporate_coauthor</xsl:with-param>
115
  </xsl:call-template>
116
117
  <xsl:call-template name="tag_7xx">
118
    <xsl:with-param name="tag">712</xsl:with-param>
119
    <xsl:with-param name="label">Corporate Author (Secondary)</xsl:with-param>
120
    <xsl:with-param name="spanclass">corporate_secondary_author</xsl:with-param>
121
  </xsl:call-template>
122
123
  <xsl:call-template name="tag_title">
124
    <xsl:with-param name="tag">500</xsl:with-param>
125
    <xsl:with-param name="label">Uniform Title</xsl:with-param>
126
    <xsl:with-param name="spanclass">uniform_title</xsl:with-param>
127
  </xsl:call-template>
128
129
  <xsl:call-template name="tag_title">
130
    <xsl:with-param name="tag">503</xsl:with-param>
131
    <xsl:with-param name="label">Uniform Conventional Heading</xsl:with-param>
132
    <xsl:with-param name="spanclass">uniform_conventional_heading</xsl:with-param>
133
  </xsl:call-template>
134
135
  <xsl:if test="marc:datafield[@tag=101]">
136
    <span class="results_summary language">
137
      <span class="label">Language: </span>
138
      <xsl:for-each select="marc:datafield[@tag=101]">
139
        <xsl:for-each select="marc:subfield">
140
          <xsl:choose>
141
            <xsl:when test="@code='b'">of intermediate text, </xsl:when>
142
            <xsl:when test="@code='c'">of original work, </xsl:when>
143
            <xsl:when test="@code='d'">of summary, </xsl:when>
144
            <xsl:when test="@code='e'">of contents page, </xsl:when>
145
            <xsl:when test="@code='f'">of title page, </xsl:when>
146
            <xsl:when test="@code='g'">of title proper, </xsl:when>
147
            <xsl:when test="@code='h'">of libretto, </xsl:when>
148
            <xsl:when test="@code='i'">of accompanying material, </xsl:when>
149
            <xsl:when test="@code='j'">of subtitles, </xsl:when>
150
          </xsl:choose>
151
          <xsl:value-of select="text()"/>
152
          <xsl:choose>
153
            <xsl:when test="position()=last()">
154
              <xsl:text>.</xsl:text>
155
            </xsl:when>
156
            <xsl:otherwise>
157
              <xsl:text> ; </xsl:text>
158
            </xsl:otherwise>
159
          </xsl:choose>
160
        </xsl:for-each>
161
      </xsl:for-each>
162
    </span>
163
  </xsl:if>
164
165
  <xsl:if test="marc:datafield[@tag=102]">
166
    <span class="results_summary country">
167
      <span class="label">Country: </span>
168
      <xsl:for-each select="marc:datafield[@tag=102]">
169
        <xsl:for-each select="marc:subfield">
170
          <xsl:value-of select="text()"/>
171
          <xsl:choose>
172
            <xsl:when test="position()=last()">
173
              <xsl:text>.</xsl:text>
174
            </xsl:when>
175
              <xsl:otherwise><xsl:text>, </xsl:text>
176
            </xsl:otherwise>
177
          </xsl:choose>
178
        </xsl:for-each>
179
      </xsl:for-each>
180
    </span>
181
  </xsl:if>
182
183
  <xsl:call-template name="tag_comma">
184
    <xsl:with-param name="tag">205</xsl:with-param>
185
    <xsl:with-param name="label">Edition Statement</xsl:with-param>
186
    <xsl:with-param name="spanclass">edition</xsl:with-param>
187
  </xsl:call-template>
188
189
  <xsl:if test="(marc:datafield[@tag=214] or marc:datafield[@tag=210])">
190
    <xsl:choose>
191
        <xsl:when test="(marc:datafield[@tag=214] and  marc:datafield[@tag=210])">
192
            <xsl:call-template name="tag_214" />
193
        </xsl:when>
194
        <xsl:when test="(marc:datafield[@tag=214])">
195
            <xsl:call-template name="tag_214" />
196
        </xsl:when>
197
        <xsl:when test="(marc:datafield[@tag=210])">
198
            <xsl:call-template name="tag_210" />
199
        </xsl:when>
200
    </xsl:choose>
201
  </xsl:if>
202
203
  <xsl:call-template name="tag_215" />
204
205
  <!-- Build ISBN -->
206
  <xsl:if test="marc:datafield[@tag=010]/marc:subfield[@code='a']">
207
    <span class="results_summary isbn">
208
      <span class="label">ISBN: </span>
209
      <xsl:for-each select="marc:datafield[@tag=010]/marc:subfield[@code='a']">
210
        <span property="isbn">
211
          <xsl:value-of select="."/>
212
          <xsl:choose>
213
            <xsl:when test="position()=last()">
214
              <xsl:text>.</xsl:text>
215
            </xsl:when>
216
            <xsl:otherwise>
217
              <xsl:text>; </xsl:text>
218
            </xsl:otherwise>
219
          </xsl:choose>
220
        </span>
221
      </xsl:for-each>
222
    </span>
223
  </xsl:if>
224
225
  <!-- Build ISSN -->
226
  <xsl:if test="marc:datafield[@tag=011]/marc:subfield[@code='a']">
227
    <span class="results_summary issn">
228
      <span class="label">ISSN: </span>
229
      <xsl:for-each select="marc:datafield[@tag=011]/marc:subfield[@code='a']">
230
        <span property="issn">
231
          <xsl:value-of select="."/>
232
          <xsl:choose>
233
            <xsl:when test="position()=last()">
234
              <xsl:text>.</xsl:text>
235
            </xsl:when>
236
            <xsl:otherwise>
237
              <xsl:text>; </xsl:text>
238
            </xsl:otherwise>
239
          </xsl:choose>
240
        </span>
241
      </xsl:for-each>
242
    </span>
243
  </xsl:if>
244
245
  <xsl:call-template name="tag_title">
246
    <xsl:with-param name="tag">225</xsl:with-param>
247
    <xsl:with-param name="label">Series</xsl:with-param>
248
    <xsl:with-param name="spanclass">series</xsl:with-param>
249
  </xsl:call-template>
250
251
  <xsl:if test="marc:datafield[@tag=676]">
252
    <span class="results_summary dewey">
253
      <span class="label">Dewey: </span>
254
      <xsl:for-each select="marc:datafield[@tag=676]">
255
        <xsl:value-of select="marc:subfield[@code='a']"/>
256
        <xsl:if test="marc:subfield[@code='v']">
257
          <xsl:text>, </xsl:text>
258
          <xsl:value-of select="marc:subfield[@code='v']"/>
259
        </xsl:if>
260
        <xsl:if test="marc:subfield[@code='z']">
261
          <xsl:text>, </xsl:text>
262
          <xsl:value-of select="marc:subfield[@code='z']"/>
263
        </xsl:if>
264
        <xsl:if test="not (position()=last())">
265
          <xsl:text> ; </xsl:text>
266
        </xsl:if>
267
      </xsl:for-each>
268
    </span>
269
  </xsl:if>
270
271
  <xsl:if test="marc:datafield[@tag=686]">
272
    <span class="results_summary classification">
273
      <span class="label">Classification: </span>
274
      <xsl:for-each select="marc:datafield[@tag=686]">
275
        <xsl:value-of select="marc:subfield[@code='a']"/>
276
        <xsl:if test="marc:subfield[@code='b']">
277
          <xsl:text>, </xsl:text>
278
          <xsl:value-of select="marc:subfield[@code='b']"/>
279
        </xsl:if>
280
        <xsl:if test="marc:subfield[@code='c']">
281
          <xsl:text>, </xsl:text>
282
          <xsl:value-of select="marc:subfield[@code='c']"/>
283
        </xsl:if>
284
        <xsl:if test="not (position()=last())"><xsl:text> ; </xsl:text></xsl:if>
285
      </xsl:for-each>
286
    </span>
287
  </xsl:if>
288
289
  <xsl:if test="marc:datafield[@tag=327]">
290
    <span class="results_summary contents">
291
      <span class="label">Contents note: </span>
292
      <xsl:for-each select="marc:datafield[@tag=327]">
293
        <xsl:call-template name="chopPunctuation">
294
          <xsl:with-param name="chopString">
295
            <xsl:call-template name="subfieldSelect">
296
                <xsl:with-param name="codes">abcdjpvxyz</xsl:with-param>
297
                <xsl:with-param name="subdivCodes">jpxyz</xsl:with-param>
298
                <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
299
            </xsl:call-template>
300
          </xsl:with-param>
301
        </xsl:call-template>
302
      </xsl:for-each>
303
    </span>
304
  </xsl:if>
305
306
  <xsl:if test="marc:datafield[@tag=330]">
307
    <span class="results_summary abstract">
308
      <span class="label">Abstract: </span>
309
      <xsl:for-each select="marc:datafield[@tag=330]">
310
        <xsl:value-of select="marc:subfield[@code='a']"/>
311
        <xsl:choose>
312
          <xsl:when test="position()=last()">
313
            <xsl:text>.</xsl:text>
314
          </xsl:when>
315
          <xsl:otherwise>
316
            <xsl:text>; </xsl:text>
317
          </xsl:otherwise>
318
        </xsl:choose>
319
      </xsl:for-each>
320
    </span>
321
  </xsl:if>
322
323
  <xsl:if test="marc:datafield[@tag=317]">
324
    <span class="results_summary provenance">
325
      <span class="label">Provenance note: </span>
326
      <xsl:for-each select="marc:datafield[@tag=317]">
327
          <xsl:value-of select="marc:subfield[@code='a']"/>
328
      </xsl:for-each>
329
    </span>
330
  </xsl:if>
331
332
  <xsl:if test="marc:datafield[@tag=320]">
333
    <span class="results_summary bibliography">
334
      <span class="label">Bibliography: </span>
335
      <xsl:for-each select="marc:datafield[@tag=320]">
336
        <xsl:value-of select="marc:subfield[@code='a']"/>
337
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
338
      </xsl:for-each>
339
    </span>
340
  </xsl:if>
341
342
  <xsl:if test="marc:datafield[@tag=328]">
343
    <span class="results_summary thesis">
344
      <span class="label">Thesis: </span>
345
      <xsl:for-each select="marc:datafield[@tag=328]">
346
        <xsl:value-of select="marc:subfield[@code='a']"/>
347
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
348
      </xsl:for-each>
349
    </span>
350
  </xsl:if>
351
352
  <xsl:if test="marc:datafield[@tag=333]">
353
    <span class="results_summary audience">
354
      <span class="label">Audience: </span>
355
      <xsl:for-each select="marc:datafield[@tag=333]">
356
        <xsl:value-of select="marc:subfield[@code='a']"/>
357
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
358
      </xsl:for-each>
359
    </span>
360
  </xsl:if>
361
362
  <xsl:if test="marc:datafield[@tag=955]">
363
    <span class="results_summary sudoc_serial_history">
364
      <span class="label">SUDOC serial history: </span>
365
      <xsl:for-each select="marc:datafield[@tag=955]">
366
        <xsl:value-of select="marc:subfield[@code='9']"/>:
367
        <xsl:value-of select="marc:subfield[@code='r']"/>
368
        <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
369
      </xsl:for-each>
370
    </span>
371
  </xsl:if>
372
373
  <xsl:call-template name="tag_subject">
374
    <xsl:with-param name="tag">600</xsl:with-param>
375
    <xsl:with-param name="label">Subject - Personal Name</xsl:with-param>
376
  </xsl:call-template>
377
378
  <xsl:call-template name="tag_subject">
379
    <xsl:with-param name="tag">601</xsl:with-param>
380
    <xsl:with-param name="label">Subject - Corporate Author</xsl:with-param>
381
  </xsl:call-template>
382
383
  <xsl:call-template name="tag_subject">
384
    <xsl:with-param name="tag">602</xsl:with-param>
385
    <xsl:with-param name="label">Subject - Family</xsl:with-param>
386
  </xsl:call-template>
387
388
  <xsl:call-template name="tag_subject">
389
    <xsl:with-param name="tag">604</xsl:with-param>
390
    <xsl:with-param name="label">Subject - Author/Title</xsl:with-param>
391
  </xsl:call-template>
392
393
  <xsl:call-template name="tag_subject">
394
    <xsl:with-param name="tag">606</xsl:with-param>
395
    <xsl:with-param name="label">Subject - Topical Name</xsl:with-param>
396
  </xsl:call-template>
397
398
  <xsl:call-template name="tag_subject">
399
    <xsl:with-param name="tag">607</xsl:with-param>
400
    <xsl:with-param name="label">Subject - Geographical Name</xsl:with-param>
401
  </xsl:call-template>
402
403
  <xsl:call-template name="tag_subject">
404
    <xsl:with-param name="tag">608</xsl:with-param>
405
    <xsl:with-param name="label">Subject - Form</xsl:with-param>
406
  </xsl:call-template>
407
408
  <xsl:call-template name="tag_subject">
409
    <xsl:with-param name="tag">610</xsl:with-param>
410
    <xsl:with-param name="label">Subject</xsl:with-param>
411
  </xsl:call-template>
412
413
  <xsl:call-template name="tag_subject">
414
    <xsl:with-param name="tag">615</xsl:with-param>
415
    <xsl:with-param name="label">Subject Category</xsl:with-param>
416
  </xsl:call-template>
417
418
  <xsl:call-template name="tag_subject">
419
    <xsl:with-param name="tag">616</xsl:with-param>
420
    <xsl:with-param name="label">Trademark</xsl:with-param>
421
  </xsl:call-template>
422
423
  <xsl:if test="marc:datafield[@tag=856]">
424
    <span class="results_summary online_resources">
425
      <span class="label">Online Resources:</span>
426
      <xsl:for-each select="marc:datafield[@tag=856]">
427
        <a>
428
          <xsl:attribute name="href">
429
            <xsl:value-of select="marc:subfield[@code='u']"/>
430
          </xsl:attribute>
431
          <xsl:if test="$OPACURLOpenInNewWindow='1'">
432
            <xsl:attribute name="target">_blank</xsl:attribute>
433
          </xsl:if>
434
          <xsl:choose>
435
            <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
436
              <xsl:call-template name="subfieldSelect">
437
                <xsl:with-param name="codes">y3z</xsl:with-param>
438
              </xsl:call-template>
439
            </xsl:when>
440
            <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
441
              <xsl:choose>
442
                <xsl:when test="$URLLinkText!=''">
443
                  <xsl:value-of select="$URLLinkText"/>
444
                </xsl:when>
445
                <xsl:otherwise>
446
                  <xsl:text>Click here to access online</xsl:text>
447
                </xsl:otherwise>
448
              </xsl:choose>
449
            </xsl:when>
450
          </xsl:choose>
451
        </a>
452
        <xsl:choose>
453
          <xsl:when test="position()=last()"></xsl:when>
454
          <xsl:otherwise> | </xsl:otherwise>
455
        </xsl:choose>
456
      </xsl:for-each>
457
    </span>
458
  </xsl:if>
459
460
  <!-- OpenURL -->
461
  <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" />
462
  <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" />
463
  <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" />
464
  <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" />
465
466
  <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''">
467
    <xsl:variable name="openurltext">
468
      <xsl:choose>
469
        <xsl:when test="$OpenURLText != ''">
470
          <xsl:value-of select="$OpenURLText" />
471
        </xsl:when>
472
        <xsl:otherwise>
473
          <xsl:text>OpenURL</xsl:text>
474
        </xsl:otherwise>
475
      </xsl:choose>
476
    </xsl:variable>
477
478
    <span class="results_summary"><a>
479
      <xsl:attribute name="href">
480
        <xsl:value-of select="$OpenURLResolverURL" />
481
      </xsl:attribute>
482
      <xsl:attribute name="title">
483
        <xsl:value-of select="$openurltext" />
484
      </xsl:attribute>
485
      <xsl:attribute name="class">
486
        <xsl:text>OpenURL</xsl:text>
487
      </xsl:attribute>
488
      <xsl:if test="$OPACURLOpenInNewWindow='1'">
489
        <xsl:attribute name="target">
490
          <xsl:text>_blank</xsl:text>
491
        </xsl:attribute>
492
      </xsl:if>
493
      <xsl:choose>
494
        <xsl:when test="$OpenURLImageLocation != ''">
495
          <img>
496
            <xsl:attribute name="src">
497
              <xsl:value-of select="$OpenURLImageLocation" />
498
            </xsl:attribute>
499
          </img>
500
        </xsl:when>
501
        <xsl:otherwise>
502
          <xsl:value-of select="$openurltext" />
503
        </xsl:otherwise>
504
      </xsl:choose>
505
    </a></span>
506
  </xsl:if>
507
  <!-- End of OpenURL -->
508
509
  <xsl:variable name="OPACShowMusicalInscripts" select="marc:sysprefs/marc:syspref[@name='OPACShowMusicalInscripts']" />
510
  <xsl:variable name="OPACPlayMusicalInscripts" select="marc:sysprefs/marc:syspref[@name='OPACPlayMusicalInscripts']" />
511
512
  <xsl:if test="$OPACShowMusicalInscripts and marc:datafield[@tag=036]">
513
      <xsl:for-each select="marc:datafield[@tag=031]">
514
515
        <span class="results_summary musical_inscripts">
516
            <xsl:if test="marc:subfield[@code='u']">
517
                <span class="uri">
518
                    <a>
519
                        <xsl:attribute name="href">
520
                            <xsl:value-of select="marc:subfield[@code='u']"/>
521
                        </xsl:attribute>
522
                        <xsl:text>Audio file</xsl:text>
523
                    </a>
524
                </span>
525
            </xsl:if>
526
            <xsl:if test="marc:subfield[@code='2'] and marc:subfield[@code='2']/text() = 'pe' and marc:subfield[@code='g'] and marc:subfield[@code='n'] and marc:subfield[@code='o'] and marc:subfield[@code='p']">
527
                <div class="inscript" data-system="pae">
528
                    <xsl:attribute name="data-clef">
529
                        <xsl:value-of select="marc:subfield[@code='g']"/>
530
                    </xsl:attribute>
531
                    <xsl:attribute name="data-keysig">
532
                        <xsl:value-of select="marc:subfield[@code='n']"/>
533
                    </xsl:attribute>
534
                    <xsl:attribute name="data-timesig">
535
                        <xsl:value-of select="marc:subfield[@code='o']"/>
536
                    </xsl:attribute>
537
                    <xsl:attribute name="data-notation">
538
                        <xsl:value-of select="marc:subfield[@code='p']"/>
539
                    </xsl:attribute>
540
                </div>
541
                <xsl:if test="$OPACPlayMusicalInscripts = 1">
542
                    <div class="audio_controls">
543
                        <button class="btn play_btn">
544
                            <i id="carticon" class="fa fa-play"></i>
545
                            <xsl:text> Play this sample</xsl:text>
546
                        </button>
547
                    </div>
548
                </xsl:if>
549
            </xsl:if>
550
        </span>
551
    </xsl:for-each>
552
    <xsl:if test="$OPACPlayMusicalInscripts = 1">
553
        <div class="results_summary">
554
            <span class="inscript_audio hide"></span>
555
        </div>
556
    </xsl:if>
557
  </xsl:if>
558
559
</xsl:template>
560
561
    <xsl:template name="nameABCDQ">
562
            <xsl:call-template name="chopPunctuation">
563
                <xsl:with-param name="chopString">
564
                    <xsl:call-template name="subfieldSelect">
565
                        <xsl:with-param name="codes">aq</xsl:with-param>
566
                    </xsl:call-template>
567
                </xsl:with-param>
568
                <xsl:with-param name="punctuation">
569
                    <xsl:text>:,;/ </xsl:text>
570
                </xsl:with-param>
571
            </xsl:call-template>
572
        <xsl:call-template name="termsOfAddress"/>
573
    </xsl:template>
574
575
    <xsl:template name="nameABCDN">
576
        <xsl:for-each select="marc:subfield[@code='a']">
577
                <xsl:call-template name="chopPunctuation">
578
                    <xsl:with-param name="chopString" select="."/>
579
                </xsl:call-template>
580
        </xsl:for-each>
581
        <xsl:for-each select="marc:subfield[@code='b']">
582
                <xsl:value-of select="."/>
583
        </xsl:for-each>
584
        <xsl:if test="marc:subfield[@code='c'] or marc:subfield[@code='d'] or marc:subfield[@code='n']">
585
                <xsl:call-template name="subfieldSelect">
586
                    <xsl:with-param name="codes">cdn</xsl:with-param>
587
                </xsl:call-template>
588
        </xsl:if>
589
    </xsl:template>
590
591
    <xsl:template name="nameACDEQ">
592
            <xsl:call-template name="subfieldSelect">
593
                <xsl:with-param name="codes">acdeq</xsl:with-param>
594
            </xsl:call-template>
595
    </xsl:template>
596
    <xsl:template name="termsOfAddress">
597
        <xsl:if test="marc:subfield[@code='b' or @code='c']">
598
            <xsl:call-template name="chopPunctuation">
599
                <xsl:with-param name="chopString">
600
                    <xsl:call-template name="subfieldSelect">
601
                        <xsl:with-param name="codes">bc</xsl:with-param>
602
                    </xsl:call-template>
603
                </xsl:with-param>
604
            </xsl:call-template>
605
        </xsl:if>
606
    </xsl:template>
607
608
    <xsl:template name="part">
609
        <xsl:variable name="partNumber">
610
            <xsl:call-template name="specialSubfieldSelect">
611
                <xsl:with-param name="axis">n</xsl:with-param>
612
                <xsl:with-param name="anyCodes">n</xsl:with-param>
613
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
614
            </xsl:call-template>
615
        </xsl:variable>
616
        <xsl:variable name="partName">
617
            <xsl:call-template name="specialSubfieldSelect">
618
                <xsl:with-param name="axis">p</xsl:with-param>
619
                <xsl:with-param name="anyCodes">p</xsl:with-param>
620
                <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param>
621
            </xsl:call-template>
622
        </xsl:variable>
623
        <xsl:if test="string-length(normalize-space($partNumber))">
624
                <xsl:call-template name="chopPunctuation">
625
                    <xsl:with-param name="chopString" select="$partNumber"/>
626
                </xsl:call-template>
627
        </xsl:if>
628
        <xsl:if test="string-length(normalize-space($partName))">
629
                <xsl:call-template name="chopPunctuation">
630
                    <xsl:with-param name="chopString" select="$partName"/>
631
                </xsl:call-template>
632
        </xsl:if>
633
    </xsl:template>
634
635
    <xsl:template name="specialSubfieldSelect">
636
        <xsl:param name="anyCodes"/>
637
        <xsl:param name="axis"/>
638
        <xsl:param name="beforeCodes"/>
639
        <xsl:param name="afterCodes"/>
640
        <xsl:variable name="str">
641
            <xsl:for-each select="marc:subfield">
642
                <xsl:if test="contains($anyCodes, @code)      or (contains($beforeCodes,@code) and following-sibling::marc:subfield[@code=$axis])      or (contains($afterCodes,@code) and preceding-sibling::marc:subfield[@code=$axis])">
643
                    <xsl:value-of select="text()"/>
644
                    <xsl:text> </xsl:text>
645
                </xsl:if>
646
            </xsl:for-each>
647
        </xsl:variable>
648
        <xsl:value-of select="substring($str,1,string-length($str)-1)"/>
649
    </xsl:template>
650
651
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/xslt/UNIMARCslim2OPACResults.xsl (+406 lines)
Line 0 Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!DOCTYPE stylesheet>
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
  xmlns:str="http://exslt.org/strings"
10
  exclude-result-prefixes="marc items str">
11
12
<xsl:import href="UNIMARCslimUtils.xsl"/>
13
<xsl:output method = "html" indent="yes" omit-xml-declaration = "yes" encoding="UTF-8"/>
14
<xsl:key name="item-by-status" match="items:item" use="items:status"/>
15
<xsl:key name="item-by-status-and-branch-home" match="items:item" use="concat(items:status, ' ', items:homebranch)"/>
16
<xsl:key name="item-by-status-and-branch-holding" match="items:item" use="concat(items:status, ' ', items:holdingbranch)"/>
17
<xsl:key name="item-by-substatus-and-branch" match="items:item" use="concat(items:substatus, ' ', items:homebranch)"/>
18
19
<xsl:template match="/">
20
  <xsl:apply-templates/>
21
</xsl:template>
22
23
<xsl:template match="marc:record">
24
  <xsl:variable name="leader" select="marc:leader"/>
25
  <xsl:variable name="leader6" select="substring($leader,7,1)"/>
26
  <xsl:variable name="leader7" select="substring($leader,8,1)"/>
27
  <xsl:variable name="biblionumber" select="marc:controlfield[@tag=001]"/>
28
  <xsl:variable name="isbn" select="marc:datafield[@tag=010]/marc:subfield[@code='a']"/>
29
  <xsl:variable name="OPACResultsLibrary" select="marc:sysprefs/marc:syspref[@name='OPACResultsLibrary']"/>
30
  <xsl:variable name="BiblioDefaultView" select="marc:sysprefs/marc:syspref[@name='BiblioDefaultView']"/>
31
  <xsl:variable name="hidelostitems" select="marc:sysprefs/marc:syspref[@name='hidelostitems']"/>
32
  <xsl:variable name="singleBranchMode" select="marc:sysprefs/marc:syspref[@name='singleBranchMode']"/>
33
  <xsl:variable name="OPACURLOpenInNewWindow" select="marc:sysprefs/marc:syspref[@name='OPACURLOpenInNewWindow']"/>
34
35
  <xsl:if test="marc:datafield[@tag=200]">
36
    <xsl:for-each select="marc:datafield[@tag=200]">
37
        <xsl:call-template name="addClassRtl" />
38
        <xsl:for-each select="marc:subfield">
39
          <xsl:choose>
40
            <xsl:when test="@code='a'">
41
              <xsl:variable name="title" select="."/>
42
              <xsl:variable name="ntitle"
43
                select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
44
              <a>
45
                <xsl:attribute name="href">
46
                  <xsl:call-template name="buildBiblioDefaultViewURL">
47
                      <xsl:with-param name="BiblioDefaultView">
48
                          <xsl:value-of select="$BiblioDefaultView"/>
49
                      </xsl:with-param>
50
                  </xsl:call-template>
51
                  <xsl:value-of select="str:encode-uri($biblionumber, true())"/>
52
                </xsl:attribute>
53
                <xsl:attribute name="class">title</xsl:attribute>
54
                <xsl:value-of select="$ntitle" />
55
              </a>
56
            </xsl:when>
57
            <xsl:when test="@code='b'">
58
              <xsl:text> [</xsl:text>
59
              <xsl:value-of select="."/>
60
              <xsl:text>]</xsl:text>
61
            </xsl:when>
62
            <xsl:when test="@code='d'">
63
              <xsl:text> = </xsl:text>
64
              <xsl:value-of select="."/>
65
            </xsl:when>
66
            <xsl:when test="@code='e'">
67
              <xsl:text> : </xsl:text>
68
              <xsl:value-of select="."/>
69
            </xsl:when>
70
            <xsl:when test="@code='f'">
71
              <xsl:text> / </xsl:text>
72
              <xsl:value-of select="."/>
73
            </xsl:when>
74
            <xsl:when test="@code='g'">
75
              <xsl:text> ; </xsl:text>
76
              <xsl:value-of select="."/>
77
            </xsl:when>
78
            <xsl:otherwise>
79
              <xsl:text>, </xsl:text>
80
              <xsl:value-of select="."/>
81
            </xsl:otherwise>
82
          </xsl:choose>
83
        </xsl:for-each>
84
    </xsl:for-each>
85
  </xsl:if>
86
87
  <!-- OpenURL -->
88
  <xsl:variable name="OPACShowOpenURL" select="marc:sysprefs/marc:syspref[@name='OPACShowOpenURL']" />
89
  <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" />
90
  <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" />
91
  <xsl:variable name="OpenURLResolverURL" select="marc:variables/marc:variable[@name='OpenURLResolverURL']" />
92
93
  <xsl:if test="$OPACShowOpenURL = 1 and $OpenURLResolverURL != ''">
94
    <xsl:variable name="openurltext">
95
      <xsl:choose>
96
        <xsl:when test="$OpenURLText != ''">
97
          <xsl:value-of select="$OpenURLText" />
98
        </xsl:when>
99
        <xsl:otherwise>
100
          <xsl:text>OpenURL</xsl:text>
101
        </xsl:otherwise>
102
      </xsl:choose>
103
    </xsl:variable>
104
105
    <span class="results_summary"><a>
106
      <xsl:attribute name="href">
107
        <xsl:value-of select="$OpenURLResolverURL" />
108
      </xsl:attribute>
109
      <xsl:attribute name="title">
110
        <xsl:value-of select="$openurltext" />
111
      </xsl:attribute>
112
      <xsl:attribute name="class">
113
        <xsl:text>OpenURL</xsl:text>
114
      </xsl:attribute>
115
      <xsl:if test="$OPACURLOpenInNewWindow='1'">
116
        <xsl:attribute name="target">
117
          <xsl:text>_blank</xsl:text>
118
        </xsl:attribute>
119
      </xsl:if>
120
      <xsl:choose>
121
        <xsl:when test="$OpenURLImageLocation != ''">
122
          <img>
123
            <xsl:attribute name="src">
124
              <xsl:value-of select="$OpenURLImageLocation" />
125
            </xsl:attribute>
126
          </img>
127
        </xsl:when>
128
        <xsl:otherwise>
129
          <xsl:value-of select="$openurltext" />
130
        </xsl:otherwise>
131
      </xsl:choose>
132
    </a></span>
133
  </xsl:if>
134
  <!-- End of OpenURL -->
135
136
  <xsl:call-template name="tag_title">
137
    <xsl:with-param name="tag">454</xsl:with-param>
138
    <xsl:with-param name="label">Translation of</xsl:with-param>
139
    <xsl:with-param name="spanclass">original_title</xsl:with-param>
140
  </xsl:call-template>
141
142
  <xsl:call-template name="tag_title">
143
    <xsl:with-param name="tag">461</xsl:with-param>
144
    <xsl:with-param name="label">Set Level</xsl:with-param>
145
    <xsl:with-param name="spanclass">set_level</xsl:with-param>
146
  </xsl:call-template>
147
148
  <xsl:call-template name="tag_title">
149
    <xsl:with-param name="tag">464</xsl:with-param>
150
    <xsl:with-param name="label">Piece-Analytic Level</xsl:with-param>
151
    <xsl:with-param name="spanclass">piece_analytic_level</xsl:with-param>
152
  </xsl:call-template>
153
154
  <xsl:if test="marc:datafield[@tag=210 or @tag=214]">
155
      <xsl:call-template name="tag_210-214" />
156
  </xsl:if>
157
158
  <xsl:call-template name="tag_215" />
159
160
  <span class="results_summary availability">
161
    <span class="label">Availability: </span>
162
    <xsl:choose>
163
      <xsl:when test="marc:datafield[@tag=856]">
164
        <xsl:for-each select="marc:datafield[@tag=856]">
165
          <xsl:choose>
166
            <xsl:when test="@ind2=0">
167
              <a>
168
                <xsl:attribute name="href">
169
                  <xsl:value-of select="marc:subfield[@code='u']"/>
170
                </xsl:attribute>
171
                <xsl:if test="$OPACURLOpenInNewWindow='1'">
172
                    <xsl:attribute name="target">_blank</xsl:attribute>
173
                </xsl:if>
174
                <xsl:choose>
175
                  <xsl:when test="marc:subfield[@code='y' or @code='3' or @code='z']">
176
                    <xsl:call-template name="subfieldSelect">
177
                      <xsl:with-param name="codes">y3z</xsl:with-param>
178
                    </xsl:call-template>
179
                  </xsl:when>
180
                  <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
181
                    Click here to access online
182
                  </xsl:when>
183
                </xsl:choose>
184
              </a>
185
              <xsl:choose>
186
                <xsl:when test="position()=last()"></xsl:when>
187
                <xsl:otherwise> | </xsl:otherwise>
188
              </xsl:choose>
189
            </xsl:when>
190
          </xsl:choose>
191
        </xsl:for-each>
192
      </xsl:when>
193
      <xsl:when test="count(key('item-by-status', 'available'))=0 and count(key('item-by-status', 'reference'))=0">
194
        No items available
195
      </xsl:when>
196
      <xsl:when test="count(key('item-by-status', 'available'))>0">
197
        <span class="available reallyavailable">
198
          <span class="AvailabilityLabel"><strong><xsl:text>Items available for loan: </xsl:text></strong></span>
199
          <xsl:variable name="available_items" select="key('item-by-status', 'available')"/>
200
      <xsl:choose>
201
      <xsl:when test="$singleBranchMode=1">
202
      <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch))[1])]">
203
          <span class="ItemSummary">
204
              <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">
205
                  <span class="CallNumberAndLabel">
206
                      <span class="LabelCallNumber">Call number: </span>
207
                      <span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span>
208
                  </span>
209
              </xsl:if>
210
              <xsl:text> (</xsl:text>
211
              <xsl:value-of select="count(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch)))"/>
212
              <xsl:text>)</xsl:text>
213
              <xsl:choose>
214
                  <xsl:when test="position()=last()">
215
                      <xsl:text>. </xsl:text>
216
                  </xsl:when>
217
                  <xsl:otherwise>
218
                      <xsl:text>, </xsl:text>
219
                  </xsl:otherwise>
220
              </xsl:choose>
221
          </span>
222
      </xsl:for-each>
223
      </xsl:when>
224
      <xsl:otherwise>
225
          <xsl:choose>
226
              <xsl:when test="$OPACResultsLibrary='homebranch'">
227
                  <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch))[1])]">
228
                    <span class="ItemSummary">
229
                        <span class="ItemBranch"><xsl:value-of select="items:homebranch"/> </span>
230
                        <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">
231
                            <span class="CallNumberAndLabel">
232
                                <span class="LabelCallNumber">Call number: </span>
233
                                <span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span>
234
                            </span>
235
                        </xsl:if>
236
                        <xsl:text> (</xsl:text>
237
                        <xsl:value-of select="count(key('item-by-status-and-branch-home', concat(items:status, ' ', items:homebranch)))"/>
238
                        <xsl:text>)</xsl:text>
239
                        <xsl:choose>
240
                          <xsl:when test="position()=last()">
241
                            <xsl:text>. </xsl:text>
242
                          </xsl:when>
243
                          <xsl:otherwise>
244
                            <xsl:text>, </xsl:text>
245
                          </xsl:otherwise>
246
                        </xsl:choose>
247
                    </span>
248
                  </xsl:for-each>
249
              </xsl:when>
250
              <xsl:otherwise>
251
                  <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch-holding', concat(items:status, ' ', items:holdingbranch))[1])]">
252
                    <span class="ItemSummary">
253
                        <span class="ItemBranch"><xsl:value-of select="items:holdingbranch"/> </span>
254
                        <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">
255
                            <span class="CallNumberAndLabel">
256
                                <span class="LabelCallNumber">Call number: </span>
257
                                <span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span>
258
                            </span>
259
                        </xsl:if>
260
                        <xsl:text> (</xsl:text>
261
                        <xsl:value-of select="count(key('item-by-status-and-branch-holding', concat(items:status, ' ', items:holdingbranch)))"/>
262
                        <xsl:text>)</xsl:text>
263
                        <xsl:choose>
264
                          <xsl:when test="position()=last()">
265
                            <xsl:text>. </xsl:text>
266
                          </xsl:when>
267
                          <xsl:otherwise>
268
                            <xsl:text>, </xsl:text>
269
                          </xsl:otherwise>
270
                        </xsl:choose>
271
                    </span>
272
                  </xsl:for-each>
273
              </xsl:otherwise>
274
            </xsl:choose>
275
      </xsl:otherwise>
276
      </xsl:choose>
277
        </span>
278
      </xsl:when>
279
    </xsl:choose>
280
    <xsl:choose>
281
      <xsl:when test="count(key('item-by-status', 'reference'))>0">
282
        <span class="available reference">
283
          <span class="AvailabilityLabel"><strong><xsl:text>Items available for reference: </xsl:text></strong></span>
284
          <xsl:variable name="reference_items"
285
                        select="key('item-by-status', 'reference')"/>
286
          <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch))[1])]">
287
            <span>
288
                <xsl:attribute name="class">
289
                    ItemSummary
290
                    <xsl:value-of select="translate(items:substatus,' ','_')"/>
291
                </xsl:attribute>
292
                <xsl:if test="$singleBranchMode=0">
293
                    <span class="ItemBranch"><xsl:value-of select="items:homebranch"/><xsl:text> </xsl:text></span>
294
                </xsl:if>
295
                <span class='notforloandesc'><xsl:value-of select="items:substatus"/></span>
296
                <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">
297
                    <span class="CallNumberAndLabel">
298
                        <span class="LabelCallNumber">Call number: </span>
299
                        <span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span>
300
                    </span>
301
                </xsl:if>
302
                <xsl:text> (</xsl:text>
303
                <xsl:value-of select="count(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch)))"/>
304
                <xsl:text>)</xsl:text>
305
                <xsl:choose>
306
                  <xsl:when test="position()=last()">
307
                    <xsl:text>. </xsl:text>
308
                  </xsl:when>
309
                  <xsl:otherwise>
310
                    <xsl:text>, </xsl:text>
311
                  </xsl:otherwise>
312
                </xsl:choose>
313
            </span>
314
          </xsl:for-each>
315
        </span>
316
      </xsl:when>
317
    </xsl:choose>
318
    <xsl:if test="count(key('item-by-status', 'available'))=0">
319
        <span class="available"><xsl:value-of select="items:homebranch"/><xsl:text>: </xsl:text></span>
320
    </xsl:if>
321
322
    <xsl:choose>
323
        <xsl:when test="count(key('item-by-status', 'reallynotforloan'))>0">
324
            <span class="unavailable">
325
                <br />
326
                <xsl:variable name="unavailable_items" select="key('item-by-status', 'reallynotforloan')"/>
327
                <xsl:for-each select="$unavailable_items[generate-id() = generate-id(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch))[1])]">
328
                    <span>
329
                        <xsl:attribute name="class">
330
                            ItemSummary
331
                            <xsl:value-of select="translate(items:substatus,' ','_')"/>
332
                        </xsl:attribute>
333
                        <xsl:if test="$singleBranchMode=0">
334
                            <span class="ItemBranch"><xsl:value-of select="items:homebranch"/><xsl:text> </xsl:text></span>
335
                        </xsl:if>
336
                        <span class='notforloandesc'><xsl:value-of select="items:substatus"/></span>
337
                        <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber">
338
                            <span class="CallNumberAndLabel">
339
                                <span class="LabelCallNumber">Call number: </span>
340
                                <span class="CallNumber"><xsl:value-of select="items:itemcallnumber"/></span>
341
                            </span>
342
                        </xsl:if>
343
                        <xsl:text> (</xsl:text>
344
                        <xsl:value-of select="count(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch)))"/>
345
                        <xsl:text>)</xsl:text>
346
                        <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose>
347
                    </span>
348
                </xsl:for-each>
349
            </span>
350
        </xsl:when>
351
    </xsl:choose>
352
353
    <xsl:if test="count(key('item-by-status', 'Checked out'))>0">
354
      <span class="unavailable">
355
        <xsl:text>Checked out (</xsl:text>
356
        <xsl:value-of select="count(key('item-by-status', 'Checked out'))"/>
357
        <xsl:text>). </xsl:text>
358
      </span>
359
    </xsl:if>
360
    <xsl:if test="count(key('item-by-status', 'Withdrawn'))>0">
361
      <span class="unavailable">
362
        <xsl:text>Withdrawn (</xsl:text>
363
        <xsl:value-of select="count(key('item-by-status', 'Withdrawn'))"/>
364
        <xsl:text>). </xsl:text>
365
      </span>
366
    </xsl:if>
367
    <xsl:if test="$hidelostitems='0' and count(key('item-by-status', 'Lost'))>0">
368
      <span class="unavailable">
369
        <xsl:text>Lost (</xsl:text>
370
        <xsl:value-of select="count(key('item-by-status', 'Lost'))"/>
371
        <xsl:text>). </xsl:text>
372
      </span>
373
    </xsl:if>
374
    <xsl:if test="count(key('item-by-status', 'Damaged'))>0">
375
      <span class="unavailable">
376
        <xsl:text>Damaged (</xsl:text>
377
        <xsl:value-of select="count(key('item-by-status', 'Damaged'))"/>
378
        <xsl:text>). </xsl:text>
379
      </span>
380
    </xsl:if>
381
    <xsl:if test="count(key('item-by-status', 'On order'))>0">
382
      <span class="unavailable">
383
        <xsl:text>On order (</xsl:text>
384
        <xsl:value-of select="count(key('item-by-status', 'On order'))"/>
385
        <xsl:text>). </xsl:text>
386
      </span>
387
    </xsl:if>
388
    <xsl:if test="count(key('item-by-status', 'In transit'))>0">
389
      <span class="unavailable">
390
        <xsl:text>In transit (</xsl:text>
391
        <xsl:value-of select="count(key('item-by-status', 'In transit'))"/>
392
        <xsl:text>). </xsl:text>
393
      </span>
394
    </xsl:if>
395
    <xsl:if test="count(key('item-by-status', 'Hold waiting'))>0">
396
      <span class="unavailable">
397
        <xsl:text>On hold (</xsl:text>
398
        <xsl:value-of select="count(key('item-by-status', 'Hold waiting'))"/>
399
        <xsl:text>). </xsl:text>
400
      </span>
401
    </xsl:if>
402
  </span>
403
404
</xsl:template>
405
406
</xsl:stylesheet>
(-)a/koha-tmpl/opac-tmpl/xslt/UNIMARCslimUtils.xsl (-1 / +677 lines)
Line 0 Link Here
0
- 
1
<?xml version='1.0'?>
2
3
<!DOCTYPE stylesheet>
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
  xmlns:str="http://exslt.org/strings"
10
  exclude-result-prefixes="marc items str">
11
12
  <xsl:template name="datafield">
13
    <xsl:param name="tag"/>
14
    <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
15
    <xsl:param name="ind2"><xsl:text> </xsl:text></xsl:param>
16
    <xsl:param name="subfields"/>
17
    <xsl:element name="datafield">
18
      <xsl:attribute name="tag">
19
        <xsl:value-of select="$tag"/>
20
      </xsl:attribute>
21
      <xsl:attribute name="ind1">
22
        <xsl:value-of select="$ind1"/>
23
      </xsl:attribute>
24
      <xsl:attribute name="ind2">
25
       <xsl:value-of select="$ind2"/>
26
         </xsl:attribute>
27
       <xsl:copy-of select="$subfields"/>
28
    </xsl:element>
29
  </xsl:template>
30
31
  <xsl:template name="subfieldSelect">
32
    <xsl:param name="codes"/>
33
    <xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
34
    <xsl:param name="subdivCodes"/>
35
    <xsl:param name="subdivDelimiter"/>
36
    <xsl:param name="urlencode"/>
37
    <xsl:variable name="str">
38
      <xsl:for-each select="marc:subfield">
39
        <xsl:if test="contains($codes, @code)">
40
          <xsl:if test="contains($subdivCodes, @code)">
41
            <xsl:value-of select="$subdivDelimiter"/>
42
          </xsl:if>
43
          <xsl:value-of select="text()"/><xsl:value-of select="$delimeter"/>
44
        </xsl:if>
45
      </xsl:for-each>
46
    </xsl:variable>
47
    <xsl:choose>
48
      <xsl:when test="$urlencode=1">
49
        <xsl:value-of select="str:encode-uri(substring($str,1,string-length($str)-string-length($delimeter)), true())"/>
50
      </xsl:when>
51
      <xsl:otherwise>
52
        <xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
53
      </xsl:otherwise>
54
    </xsl:choose>
55
  </xsl:template>
56
57
  <xsl:template name="buildSpaces">
58
    <xsl:param name="spaces"/>
59
    <xsl:param name="char"><xsl:text> </xsl:text></xsl:param>
60
    <xsl:if test="$spaces>0">
61
      <xsl:value-of select="$char"/>
62
      <xsl:call-template name="buildSpaces">
63
        <xsl:with-param name="spaces" select="$spaces - 1"/>
64
        <xsl:with-param name="char" select="$char"/>
65
      </xsl:call-template>
66
    </xsl:if>
67
  </xsl:template>
68
69
  <xsl:template name="buildBiblioDefaultViewURL">
70
    <xsl:param name="BiblioDefaultView"/>
71
    <xsl:choose>
72
        <xsl:when test="$BiblioDefaultView='normal'">
73
            <xsl:text>/cgi-bin/koha/opac-detail.pl?biblionumber=</xsl:text>
74
        </xsl:when>
75
        <xsl:when test="$BiblioDefaultView='isbd'">
76
            <xsl:text>/cgi-bin/koha/opac-ISBDdetail.pl?biblionumber=</xsl:text>
77
        </xsl:when>
78
        <xsl:when test="$BiblioDefaultView='marc'">
79
            <xsl:text>/cgi-bin/koha/opac-MARCdetail.pl?biblionumber=</xsl:text>
80
        </xsl:when>
81
        <xsl:otherwise>
82
            <xsl:text>/cgi-bin/koha/opac-detail.pl?biblionumber=</xsl:text>
83
        </xsl:otherwise>
84
    </xsl:choose>
85
  </xsl:template>
86
87
88
  <xsl:template name="chopPunctuation">
89
    <xsl:param name="chopString"/>
90
    <xsl:variable name="length" select="string-length($chopString)"/>
91
    <xsl:choose>
92
      <xsl:when test="$length=0"/>
93
      <xsl:when test="contains('.:,;/ ', substring($chopString,$length,1))">
94
        <xsl:call-template name="chopPunctuation">
95
          <xsl:with-param name="chopString" select="substring($chopString,1,$length - 1)"/>
96
        </xsl:call-template>
97
      </xsl:when>
98
      <xsl:when test="not($chopString)"/>
99
      <xsl:otherwise><xsl:value-of select="$chopString"/></xsl:otherwise>
100
    </xsl:choose>
101
    <xsl:text> </xsl:text>
102
  </xsl:template>
103
104
  <xsl:template name="addClassRtl">
105
    <xsl:variable name="lang" select="marc:subfield[@code='7']" />
106
    <xsl:if test="$lang = 'ha' or $lang = 'Hebrew' or $lang = 'fa' or $lang = 'Arabe'">
107
      <xsl:attribute name="class">rtl</xsl:attribute>
108
    </xsl:if>
109
  </xsl:template>
110
111
  <xsl:template name="tag_title">
112
    <xsl:param name="tag" />
113
    <xsl:param name="label" />
114
    <xsl:param name="spanclass" />
115
    <xsl:if test="marc:datafield[@tag=$tag]">
116
      <span class="results_summary {$spanclass}">
117
        <span class="label">
118
          <xsl:value-of select="$label"/>
119
          <xsl:text>: </xsl:text>
120
        </span>
121
        <xsl:for-each select="marc:datafield[@tag=$tag]">
122
          <xsl:call-template name="addClassRtl" />
123
          <xsl:for-each select="marc:subfield">
124
            <xsl:choose>
125
              <xsl:when test="@code='a'">
126
                <xsl:variable name="title" select="."/>
127
                <xsl:variable name="ntitle"
128
                 select="translate($title, '&#x0088;&#x0089;&#x0098;&#x009C;','')"/>
129
                <xsl:value-of select="$ntitle" />
130
              </xsl:when>
131
              <xsl:when test="@code='b'">
132
                <xsl:text>[</xsl:text>
133
                <xsl:value-of select="."/>
134
                <xsl:text>]</xsl:text>
135
              </xsl:when>
136
              <xsl:when test="@code='d'">
137
                <xsl:text> = </xsl:text>
138
                <xsl:value-of select="."/>
139
              </xsl:when>
140
              <xsl:when test="@code='e'">
141
                <xsl:text> : </xsl:text>
142
                <xsl:value-of select="."/>
143
              </xsl:when>
144
              <xsl:when test="@code='f'">
145
                <xsl:text> / </xsl:text>
146
                <xsl:value-of select="."/>
147
              </xsl:when>
148
              <xsl:when test="@code='g'">
149
                <xsl:text> ; </xsl:text>
150
                <xsl:value-of select="."/>
151
              </xsl:when>
152
              <xsl:otherwise>
153
                <xsl:if test="position()>1">
154
                  <xsl:text>, </xsl:text>
155
                </xsl:if>
156
                <xsl:value-of select="."/>
157
              </xsl:otherwise>
158
            </xsl:choose>
159
          </xsl:for-each>
160
          <xsl:if test="not (position() = last())">
161
            <xsl:text> • </xsl:text>
162
          </xsl:if>
163
        </xsl:for-each>
164
      </span>
165
    </xsl:if>
166
  </xsl:template>
167
168
  <xsl:template name="tag_comma">
169
    <xsl:param name="tag" />
170
    <xsl:param name="label" />
171
    <xsl:param name="spanclass" />
172
    <xsl:if test="marc:datafield[@tag=$tag]">
173
      <span class="results_summary {$spanclass}">
174
        <span class="label">
175
        <xsl:value-of select="$label"/>: </span>
176
        <xsl:for-each select="marc:datafield[@tag=$tag]">
177
          <xsl:call-template name="addClassRtl" />
178
          <xsl:for-each select="marc:subfield">
179
            <xsl:if test="position()>1">
180
              <xsl:text>, </xsl:text>
181
            </xsl:if>
182
            <xsl:value-of select="."/>
183
          </xsl:for-each>
184
          <xsl:if test="not (position() = last())">
185
            <xsl:text> • </xsl:text>
186
          </xsl:if>
187
        </xsl:for-each>
188
      </span>
189
    </xsl:if>
190
  </xsl:template>
191
192
  <xsl:template name="tag_210">
193
    <span class="results_summary publication">
194
      <span class="label">Publication: </span>
195
      <xsl:for-each select="marc:datafield[@tag=210]">
196
        <span>
197
          <xsl:call-template name="addClassRtl" />
198
          <xsl:for-each select="marc:subfield">
199
            <xsl:choose>
200
              <xsl:when test="@code='c' or @code='g'">
201
                <xsl:if test="position()>1">
202
                  <xsl:text> : </xsl:text>
203
                </xsl:if>
204
                <xsl:value-of select="."/>
205
              </xsl:when>
206
              <xsl:otherwise>
207
                <xsl:if test="position()>1">
208
                  <xsl:text>, </xsl:text>
209
                </xsl:if>
210
                <xsl:value-of select="."/>
211
              </xsl:otherwise>
212
            </xsl:choose>
213
          </xsl:for-each>
214
          <xsl:if test="not (position() = last())">
215
            <xsl:text> • </xsl:text>
216
          </xsl:if>
217
        </span>
218
      </xsl:for-each>
219
    </span>
220
  </xsl:template>
221
222
  <xsl:template name="tag_210-214">
223
      <span class="results_summary publication">
224
          <xsl:if test="marc:datafield[@tag=210 or @tag=214]">
225
              <xsl:choose>
226
                  <xsl:when test="marc:datafield[@tag=210 and @tag=214]">
227
                      <xsl:for-each select="marc:datafield[@tag=214]">
228
                          <xsl:if test="not (position() = 1)">
229
                              <br/>
230
                          </xsl:if>
231
                          <span class="label">
232
                              <xsl:choose>
233
                                  <xsl:when test="@ind2=1">Production:
234
                          </xsl:when>
235
                                  <xsl:when test="@ind2=2">Distribution:
236
                          </xsl:when>
237
                                  <xsl:when test="@ind2=3">Manufacture:
238
                          </xsl:when>
239
                                  <xsl:when test="@ind2=4">
240
                                      <xsl:choose>
241
                                          <xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
242
                          </xsl:when>
243
                                          <xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
244
                          </xsl:when>
245
                                          <xsl:otherwise>Copyright date / protection date:
246
                          </xsl:otherwise>
247
                                      </xsl:choose>
248
                                  </xsl:when>
249
                                  <xsl:otherwise>Publication:
250
                          </xsl:otherwise>
251
                              </xsl:choose>
252
                          </span>
253
                          <span class="valeur">
254
                              <xsl:call-template name="addClassRtl" />
255
                              <xsl:for-each select="marc:subfield">
256
                                  <xsl:choose>
257
                                      <xsl:when test="@code='a'">
258
                                          <xsl:value-of select="."/>
259
                                          <xsl:if test="position() != last()">
260
                                              <xsl:text>: </xsl:text>
261
                                          </xsl:if>
262
                                      </xsl:when>
263
                                      <xsl:when test="@code='b'">
264
                                          <xsl:value-of select="."/>
265
                                          <xsl:if test="position() != last()">
266
                                              <xsl:text>, </xsl:text>
267
                                          </xsl:if>
268
                                      </xsl:when>
269
                                      <xsl:when test="@code='c' or @code='g'">
270
                                          <a>
271
                                              <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
272
                                              </xsl:attribute>
273
                                              <xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
274
                                                  <xsl:text>"</xsl:text>
275
                                              </xsl:attribute>
276
                                              <xsl:value-of select="."/>
277
                                          </a>
278
                                          <xsl:if test="position() != last()">
279
                                              <xsl:text>, </xsl:text>
280
                                          </xsl:if>
281
                                      </xsl:when>
282
                                      <xsl:when test="@code='d'">
283
                                          <xsl:value-of select="."/>
284
                                          <xsl:if test="position() != last()">
285
                                              <xsl:text>, </xsl:text>
286
                                          </xsl:if>
287
                                      </xsl:when>
288
                                  </xsl:choose>
289
                              </xsl:for-each>
290
                          </span>
291
                      </xsl:for-each>
292
                  </xsl:when>
293
                  <xsl:when test="marc:datafield[@tag=214]">
294
                      <xsl:for-each select="marc:datafield[@tag=214]">
295
                          <xsl:if test="not (position() = 1)">
296
                              <br/>
297
                          </xsl:if>
298
                          <span class="label">
299
                              <xsl:choose>
300
                                  <xsl:when test="@ind2=1">Production:
301
                          </xsl:when>
302
                                  <xsl:when test="@ind2=2">Distribution:
303
                          </xsl:when>
304
                                  <xsl:when test="@ind2=3">Manufacture:
305
                          </xsl:when>
306
                                  <xsl:when test="@ind2=4">
307
                                      <xsl:choose>
308
                                          <xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
309
                          </xsl:when>
310
                                          <xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
311
                          </xsl:when>
312
                                          <xsl:otherwise>Copyright date / protection date:
313
                          </xsl:otherwise>
314
                                      </xsl:choose>
315
                                  </xsl:when>
316
                                  <xsl:otherwise>Publication:
317
                          </xsl:otherwise>
318
                              </xsl:choose>
319
                          </span>
320
                          <span class="valeur">
321
                              <xsl:call-template name="addClassRtl" />
322
                              <xsl:for-each select="marc:subfield">
323
                                  <xsl:choose>
324
                                      <xsl:when test="@code='a'">
325
                                          <xsl:value-of select="."/>
326
                                          <xsl:if test="position() != last()">
327
                                              <xsl:text>: </xsl:text>
328
                                          </xsl:if>
329
                                      </xsl:when>
330
                                      <xsl:when test="@code='b'">
331
                                          <xsl:value-of select="."/>
332
                                          <xsl:if test="position() != last()">
333
                                              <xsl:text>, </xsl:text>
334
                                          </xsl:if>
335
                                      </xsl:when>
336
                                      <xsl:when test="@code='c' or @code='g'">
337
                                          <a>
338
                                              <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
339
                                              </xsl:attribute>
340
                                              <xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
341
                                                  <xsl:text>"</xsl:text>
342
                                              </xsl:attribute>
343
                                              <xsl:value-of select="."/>
344
                                          </a>
345
                                          <xsl:if test="position() != last()">
346
                                              <xsl:text>, </xsl:text>
347
                                          </xsl:if>
348
                                      </xsl:when>
349
                                      <xsl:when test="@code='d'">
350
                                          <xsl:value-of select="."/>
351
                                          <xsl:if test="position() != last()">
352
                                              <xsl:text>, </xsl:text>
353
                                          </xsl:if>
354
                                      </xsl:when>
355
                                  </xsl:choose>
356
                              </xsl:for-each>
357
                          </span>
358
                      </xsl:for-each>
359
                  </xsl:when>
360
                  <xsl:when test="marc:datafield[@tag=210]">
361
                      <xsl:for-each select="marc:datafield[@tag=210]">
362
                          <xsl:if test="not (position() = 1)">
363
                              <br/>
364
                          </xsl:if>
365
                          <span class="label">Publication: </span>
366
                          <span class="valeur">
367
                              <xsl:call-template name="addClassRtl" />
368
                              <xsl:for-each select="marc:subfield">
369
                                  <xsl:choose>
370
                                      <xsl:when test="@code='a'">
371
                                          <xsl:value-of select="."/>
372
                                          <xsl:if test="position() != last()">
373
                                              <xsl:text>: </xsl:text>
374
                                          </xsl:if>
375
                                      </xsl:when>
376
                                      <xsl:when test="@code='b'">
377
                                          <xsl:value-of select="."/>
378
                                          <xsl:if test="position() != last()">
379
                                              <xsl:text>, </xsl:text>
380
                                          </xsl:if>
381
                                      </xsl:when>
382
                                      <xsl:when test="@code='c' or @code='g'">
383
                                          <a>
384
                                              <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
385
                                              </xsl:attribute>
386
                                              <xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
387
                                                  <xsl:text>"</xsl:text>
388
                                              </xsl:attribute>
389
                                              <xsl:value-of select="."/>
390
                                          </a>
391
                                          <xsl:if test="position() != last()">
392
                                              <xsl:text>, </xsl:text>
393
                                          </xsl:if>
394
                                      </xsl:when>
395
                                      <xsl:when test="@code='d'">
396
                                          <xsl:value-of select="."/>
397
                                          <xsl:if test="position() != last()">
398
                                              <xsl:text>, </xsl:text>
399
                                          </xsl:if>
400
                                      </xsl:when>
401
                                  </xsl:choose>
402
                              </xsl:for-each>
403
                          </span>
404
                      </xsl:for-each>
405
                  </xsl:when>
406
              </xsl:choose>
407
          </xsl:if>
408
      </span>
409
  </xsl:template>
410
411
  <xsl:template name="tag_214">
412
      <xsl:for-each select="marc:datafield[@tag=214]">
413
          <xsl:sort select="@ind2" data-type="number" />
414
          <span class="results_summary publication">
415
              <span class="label">
416
                  <xsl:choose>
417
                      <xsl:when test="@ind2=1">Production:
418
   </xsl:when>
419
                      <xsl:when test="@ind2=2">Distribution:
420
   </xsl:when>
421
                      <xsl:when test="@ind2=3">Manufacture:
422
   </xsl:when>
423
                      <xsl:when test="@ind2=4">
424
                          <xsl:choose>
425
                              <xsl:when test="substring(marc:subfield[@code='d'],1,1)='C'">Copyright date:
426
   </xsl:when>
427
                              <xsl:when test="substring(marc:subfield[@code='d'],1,1)='P'">Protection date:
428
   </xsl:when>
429
                              <xsl:otherwise>Copyright date / protection date:
430
   </xsl:otherwise>
431
                          </xsl:choose>
432
                      </xsl:when>
433
                      <xsl:otherwise>Publication:
434
   </xsl:otherwise>
435
                  </xsl:choose>
436
              </span>
437
              <span>
438
                  <xsl:call-template name="addClassRtl" />
439
                  <xsl:for-each select="marc:subfield">
440
                      <xsl:choose>
441
                          <xsl:when test="@code='a'">
442
                              <xsl:value-of select="."/>
443
                              <xsl:if test="position() != last()">
444
                                  <xsl:text>: </xsl:text>
445
                              </xsl:if>
446
                          </xsl:when>
447
                          <xsl:when test="@code='b'">
448
                              <xsl:value-of select="."/>
449
                              <xsl:if test="not(position()=1)">
450
                                  <xsl:text>, </xsl:text>
451
                              </xsl:if>
452
                          </xsl:when>
453
                          <xsl:when test="@code='c'">
454
                              <a>
455
                                  <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?idx=pb&amp;q=<xsl:value-of select="."/>
456
                                  </xsl:attribute>
457
                                  <xsl:attribute name="title"> Search for publisher "<xsl:value-of select="."/>
458
                                      <xsl:text>"</xsl:text>
459
                                  </xsl:attribute>
460
                                  <xsl:value-of select="."/>
461
                              </a>
462
                          </xsl:when>
463
                          <xsl:when test="@code='d'">
464
                              <xsl:if test="not(position()=1)">
465
                                  <xsl:text>, </xsl:text>
466
                              </xsl:if>
467
                              <xsl:choose>
468
                                  <xsl:when test="substring(.,1,1)='C'">
469
                                      <xsl:value-of select="substring(.,2)"/>
470
                                  </xsl:when>
471
                                  <xsl:when test="substring(.,1,1)='P'">
472
                                      <xsl:value-of select="substring(.,2)"/>
473
                                  </xsl:when>
474
                                  <xsl:otherwise>
475
                                      <xsl:value-of select="."/>
476
                                  </xsl:otherwise>
477
                              </xsl:choose>
478
                          </xsl:when>
479
                      </xsl:choose>
480
                  </xsl:for-each>
481
              </span>
482
          </span>
483
      </xsl:for-each>
484
  </xsl:template>
485
486
  <xsl:template name="tag_215">
487
    <xsl:for-each select="marc:datafield[@tag=215]">
488
      <span class="results_summary description">
489
        <span class="label">Description: </span>
490
        <xsl:if test="marc:subfield[@code='a']">
491
          <xsl:value-of select="marc:subfield[@code='a']"/>
492
        </xsl:if>
493
        <xsl:if test="marc:subfield[@code='c']"> :
494
          <xsl:value-of select="marc:subfield[@code='c']"/>
495
        </xsl:if>
496
        <xsl:if test="marc:subfield[@code='d']"> ;
497
          <xsl:value-of select="marc:subfield[@code='d']"/>
498
        </xsl:if>
499
        <xsl:if test="marc:subfield[@code='e']"> +
500
          <xsl:value-of select="marc:subfield[@code='e']"/>
501
        </xsl:if>
502
      </span>
503
    </xsl:for-each>
504
  </xsl:template>
505
506
  <xsl:template name="tag_onesubject">
507
    <xsl:choose>
508
      <xsl:when test="marc:subfield[@code=9]">
509
        <xsl:for-each select="marc:subfield">
510
          <xsl:if test="@code='9'">
511
            <xsl:variable name="start" select="position()"/>
512
            <xsl:variable name="ends">
513
              <xsl:for-each select="../marc:subfield[position() &gt; $start]">
514
                <xsl:if test="@code=9">
515
                  <xsl:variable name="end" select="position() + $start"/>
516
                  <xsl:value-of select="$end"/>
517
                  <xsl:text>,</xsl:text>
518
                </xsl:if>
519
              </xsl:for-each>
520
            </xsl:variable>
521
            <xsl:variable name="end">
522
              <xsl:choose>
523
                <xsl:when test="string-length($ends) > 0">
524
                  <xsl:value-of select="substring-before($ends,',')"/>
525
                </xsl:when>
526
                <xsl:otherwise>
527
                  <xsl:text>1000</xsl:text>
528
                </xsl:otherwise>
529
              </xsl:choose>
530
            </xsl:variable>
531
            <xsl:variable name="display">
532
              <xsl:for-each select="../marc:subfield[position() &gt; $start and position() &lt; $end and @code!=2 and @code!=3]">
533
                <xsl:value-of select="."/>
534
                <xsl:if test="not(position()=last())">
535
                  <xsl:text>, </xsl:text>
536
                </xsl:if>
537
              </xsl:for-each>
538
            </xsl:variable>
539
            <a>
540
              <xsl:attribute name="href">
541
                <xsl:text>/cgi-bin/koha/opac-search.pl?q=an:</xsl:text>
542
                <xsl:value-of select="str:encode-uri(., true())"/>
543
              </xsl:attribute>
544
              <xsl:choose>
545
                <xsl:when test="string-length($display) &gt; 0">
546
                  <xsl:call-template name="chopPunctuation">
547
                    <xsl:with-param name="chopString">
548
                      <xsl:value-of select="$display"/>
549
                    </xsl:with-param>
550
                  </xsl:call-template>
551
                </xsl:when>
552
                <xsl:otherwise>
553
                  <xsl:value-of select="."/>
554
                </xsl:otherwise>
555
              </xsl:choose>
556
            </a>
557
            <xsl:variable name="ncommas"
558
                 select="string-length($ends) - string-length(translate($ends, ',', ''))" />
559
            <xsl:if test="$ncommas &gt; 1">
560
              <xsl:text> -- </xsl:text>
561
            </xsl:if>
562
          </xsl:if>
563
        </xsl:for-each>
564
      </xsl:when>
565
      <xsl:when test="marc:subfield[@code='a']">
566
        <a>
567
          <xsl:attribute name="href">
568
            <xsl:text>/cgi-bin/koha/opac-search.pl?q=su:</xsl:text>
569
            <xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>
570
          </xsl:attribute>
571
          <xsl:call-template name="chopPunctuation">
572
            <xsl:with-param name="chopString">
573
              <xsl:call-template name="subfieldSelect">
574
                <xsl:with-param name="codes">abcdfijkmnptvxyz</xsl:with-param>
575
                <xsl:with-param name="subdivCodes">ijknpxyz</xsl:with-param>
576
                <xsl:with-param name="subdivDelimiter">-- </xsl:with-param>
577
              </xsl:call-template>
578
            </xsl:with-param>
579
          </xsl:call-template>
580
        </a>
581
      </xsl:when>
582
      <xsl:otherwise/>
583
    </xsl:choose>
584
    <xsl:if test="not(position()=last())">
585
      <xsl:text> | </xsl:text>
586
    </xsl:if>
587
  </xsl:template>
588
589
  <xsl:template name="tag_subject">
590
    <xsl:param name="tag" />
591
    <xsl:param name="label" />
592
    <xsl:param name="spanclass" />
593
    <xsl:if test="marc:datafield[@tag=$tag]">
594
      <span class="results_summary subjects {$spanclass}">
595
        <span class="label">
596
          <xsl:value-of select="$label"/>
597
          <xsl:text>: </xsl:text>
598
        </span>
599
        <span class="value">
600
          <xsl:for-each select="marc:datafield[@tag=$tag]">
601
            <xsl:call-template name="tag_onesubject">
602
            </xsl:call-template>
603
          </xsl:for-each>
604
        </span>
605
      </span>
606
    </xsl:if>
607
  </xsl:template>
608
609
  <xsl:template name="tag_7xx">
610
    <xsl:param name="tag" />
611
    <xsl:param name="label" />
612
    <xsl:param name="spanclass" />
613
    <xsl:variable name="IdRef" select="marc:sysprefs/marc:syspref[@name='IdRef']"/>
614
    <xsl:if test="marc:datafield[@tag=$tag]">
615
      <span class="results_summary author {$spanclass}">
616
        <span class="label">
617
          <xsl:value-of select="$label" />
618
          <xsl:text>: </xsl:text>
619
        </span>
620
        <span class="value">
621
          <xsl:for-each select="marc:datafield[@tag=$tag]">
622
            <a>
623
              <xsl:choose>
624
                <xsl:when test="marc:subfield[@code=9]">
625
                  <xsl:attribute name="href">
626
                    <xsl:text>/cgi-bin/koha/opac-search.pl?q=an:</xsl:text>
627
                    <xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/>
628
                  </xsl:attribute>
629
                </xsl:when>
630
                <xsl:otherwise>
631
                  <xsl:attribute name="href">
632
                    <xsl:text>/cgi-bin/koha/opac-search.pl?q=au:</xsl:text>
633
                    <xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>
634
                    <xsl:text>%20</xsl:text>
635
                    <xsl:value-of select="str:encode-uri(marc:subfield[@code='b'], true())"/>
636
                  </xsl:attribute>
637
                </xsl:otherwise>
638
              </xsl:choose>
639
              <xsl:for-each select="marc:subfield[@code='a' or @code='b' or @code='4' or @code='c' or @code='d' or @code='f' or @code='g' or @code='p']">
640
                <xsl:choose>
641
                  <xsl:when test="@code='9'">
642
                  </xsl:when>
643
                  <xsl:otherwise>
644
                    <xsl:value-of select="."/>
645
                  </xsl:otherwise>
646
                </xsl:choose>
647
                <xsl:if test="not(position() = last())">
648
                  <xsl:text>, </xsl:text>
649
                </xsl:if>
650
              </xsl:for-each>
651
            </a>
652
            <xsl:if test="$IdRef = '1'">
653
              <xsl:if test="marc:subfield[@code=3]">
654
                <xsl:text> </xsl:text>
655
                <a>
656
                  <xsl:attribute name="href">
657
                    <xsl:text>/cgi-bin/koha/opac-idref.pl?unimarc3=</xsl:text>
658
                    <xsl:value-of select="str:encode-uri(marc:subfield[@code=3], true())"/>
659
                  </xsl:attribute>
660
                  <xsl:attribute name="title">IdRef</xsl:attribute>
661
                  <xsl:attribute name="rel">gb_page_center[600,500]</xsl:attribute>
662
                  <xsl:text>Idref</xsl:text>
663
                </a>
664
              </xsl:if>
665
            </xsl:if>
666
            <xsl:if test="not(position() = last())">
667
              <span style="padding: 3px;">
668
                <xsl:text>;</xsl:text>
669
              </span>
670
            </xsl:if>
671
          </xsl:for-each>
672
        </span>
673
      </span>
674
    </xsl:if>
675
  </xsl:template>
676
677
</xsl:stylesheet>

Return to bug 30430