Embedded XSLT stylesheets for service
[pazpar2-moved-to-github.git] / test / gils_service.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2     <service id="gils">
3       <settings target="z3950.indexdata.com/gils">
4         <set name="pz:name" value="Index Data GILS test server"/>
5         
6         <!-- mapping for unqualified search -->
7         <set name="pz:cclmap:term" value="u=1016 t=l,r s=al"/>
8         
9         <!-- field-specific mappings -->
10         <set name="pz:cclmap:ti" value="u=4 s=al"/>
11         <set name="pz:cclmap:su" value="u=21 s=al"/>
12         <set name="pz:cclmap:isbn" value="u=7"/>
13         <set name="pz:cclmap:issn" value="u=8"/>
14         <set name="pz:cclmap:date" value="u=30 r=r"/>
15         
16         <!-- Retrieval settings -->
17         <set name="pz:requestsyntax" value="marc21"/>
18
19         <!-- Result normalization settings -->
20         <set name="pz:nativesyntax" value="iso2709"/>
21         <set name="pz:xslt" value="myxslt"/>
22         <set name="pz:apdulog" value="1"/>
23
24         <set name="pz:maxrecs" value="3" />
25       </settings>
26
27       <metadata name="url" merge="unique"/>
28       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6"/>
29       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
30       <metadata name="isbn"/>
31       <metadata name="date" brief="yes" sortkey="numeric" type="year" merge="range"
32                 termlist="yes"/>
33       <metadata name="author" brief="yes" termlist="yes" merge="longest" rank="2"/>
34       <metadata name="subject" merge="unique" termlist="yes" rank="3"/>
35       <metadata name="id"/>
36
37       <xslt id="myxslt">
38 <xsl:stylesheet
39     version="1.0"
40     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
41     xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
42     xmlns:marc="http://www.loc.gov/MARC21/slim">
43
44     <xsl:param name="test"/>
45   
46   <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
47
48 <!-- Extract metadata from MARC21/USMARC 
49       http://www.loc.gov/marc/bibliographic/ecbdhome.html
50 -->  
51   
52   <xsl:template match="marc:record">
53     <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
54     <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
55     <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
56     <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
57     <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
58     <xsl:variable name="medium">
59       <xsl:choose>
60         <xsl:when test="$title_medium">
61           <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/>
62         </xsl:when>
63         <xsl:when test="$fulltext_a">
64           <xsl:text>electronic resource</xsl:text>
65         </xsl:when>
66         <xsl:when test="$fulltext_b">
67           <xsl:text>electronic resource</xsl:text>
68         </xsl:when>
69         <xsl:when test="$electronic_location_url">
70           <xsl:text>electronic resource</xsl:text>
71         </xsl:when>
72         <xsl:when test="$journal_title">
73           <xsl:text>article</xsl:text>
74         </xsl:when>
75         <xsl:otherwise>
76           <xsl:text>book</xsl:text>
77         </xsl:otherwise>
78       </xsl:choose>
79     </xsl:variable>
80
81     <pz:record>
82       <xsl:attribute name="mergekey">
83         <xsl:text>title </xsl:text>
84         <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
85         <xsl:text> author </xsl:text>
86         <xsl:value-of select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/>
87         <xsl:text> medium </xsl:text>
88         <xsl:value-of select="$medium"/>
89       </xsl:attribute>
90
91       <pz:metadata type="test-usersetting-2">
92         test-usersetting-2 data: 
93         <xsl:value-of select="$test"/>
94       </pz:metadata>
95
96       <xsl:for-each select="marc:controlfield[@tag='001']">
97         <pz:metadata type="id">
98           <xsl:value-of select="."/>
99         </pz:metadata>
100       </xsl:for-each>
101
102       <xsl:for-each select="marc:datafield[@tag='010']">
103         <pz:metadata type="lccn">
104           <xsl:value-of select="marc:subfield[@code='a']"/>
105         </pz:metadata>
106       </xsl:for-each>
107
108       <xsl:for-each select="marc:datafield[@tag='020']">
109         <pz:metadata type="isbn">
110           <xsl:value-of select="marc:subfield[@code='a']"/>
111         </pz:metadata>
112       </xsl:for-each>
113
114       <xsl:for-each select="marc:datafield[@tag='022']">
115         <pz:metadata type="issn">
116           <xsl:value-of select="marc:subfield[@code='a']"/>
117         </pz:metadata>
118       </xsl:for-each>
119
120       <xsl:for-each select="marc:datafield[@tag='027']">
121         <pz:metadata type="tech-rep-nr">
122           <xsl:value-of select="marc:subfield[@code='a']"/>
123         </pz:metadata>
124       </xsl:for-each>
125
126       <xsl:for-each select="marc:datafield[@tag='100']">
127         <pz:metadata type="author">
128           <xsl:value-of select="marc:subfield[@code='a']"/>
129         </pz:metadata>
130         <pz:metadata type="author-title">
131           <xsl:value-of select="marc:subfield[@code='c']"/>
132         </pz:metadata>
133         <pz:metadata type="author-date">
134           <xsl:value-of select="marc:subfield[@code='d']"/>
135         </pz:metadata>
136       </xsl:for-each>
137
138       <xsl:for-each select="marc:datafield[@tag='110']">
139         <pz:metadata type="corporate-name">
140             <xsl:value-of select="marc:subfield[@code='a']"/>
141         </pz:metadata>
142         <pz:metadata type="corporate-location">
143             <xsl:value-of select="marc:subfield[@code='c']"/>
144         </pz:metadata>
145         <pz:metadata type="corporate-date">
146             <xsl:value-of select="marc:subfield[@code='d']"/>
147         </pz:metadata>
148       </xsl:for-each>
149
150       <xsl:for-each select="marc:datafield[@tag='111']">
151         <pz:metadata type="meeting-name">
152             <xsl:value-of select="marc:subfield[@code='a']"/>
153         </pz:metadata>
154         <pz:metadata type="meeting-location">
155             <xsl:value-of select="marc:subfield[@code='c']"/>
156         </pz:metadata>
157         <pz:metadata type="meeting-date">
158             <xsl:value-of select="marc:subfield[@code='d']"/>
159         </pz:metadata>
160       </xsl:for-each>
161
162       <xsl:for-each select="marc:datafield[@tag='260']">
163         <pz:metadata type="date">
164             <xsl:value-of select="marc:subfield[@code='c']"/>
165         </pz:metadata>
166       </xsl:for-each>
167
168       <xsl:for-each select="marc:datafield[@tag='245']">
169         <pz:metadata type="title">
170           <xsl:value-of select="marc:subfield[@code='a']"/>
171         </pz:metadata>
172         <pz:metadata type="title-remainder">
173           <xsl:value-of select="marc:subfield[@code='b']"/>
174         </pz:metadata>
175         <pz:metadata type="title-responsibility">
176           <xsl:value-of select="marc:subfield[@code='c']"/>
177         </pz:metadata>
178         <pz:metadata type="title-dates">
179           <xsl:value-of select="marc:subfield[@code='f']"/>
180         </pz:metadata>
181         <pz:metadata type="title-medium">
182           <xsl:value-of select="marc:subfield[@code='h']"/>
183         </pz:metadata>
184       </xsl:for-each>
185
186       <xsl:for-each select="marc:datafield[@tag='250']">
187         <pz:metadata type="edition">
188             <xsl:value-of select="marc:subfield[@code='a']"/>
189         </pz:metadata>
190       </xsl:for-each>
191
192       <xsl:for-each select="marc:datafield[@tag='260']">
193         <pz:metadata type="publication-place">
194           <xsl:value-of select="marc:subfield[@code='a']"/>
195         </pz:metadata>
196         <pz:metadata type="publication-name">
197           <xsl:value-of select="marc:subfield[@code='b']"/>
198         </pz:metadata>
199         <pz:metadata type="publication-date">
200           <xsl:value-of select="marc:subfield[@code='c']"/>
201         </pz:metadata>
202       </xsl:for-each>
203
204       <xsl:for-each select="marc:datafield[@tag='300']">
205         <pz:metadata type="physical-extent">
206           <xsl:value-of select="marc:subfield[@code='a']"/>
207         </pz:metadata>
208         <pz:metadata type="physical-format">
209           <xsl:value-of select="marc:subfield[@code='b']"/>
210         </pz:metadata>
211         <pz:metadata type="physical-dimensions">
212           <xsl:value-of select="marc:subfield[@code='c']"/>
213         </pz:metadata>
214         <pz:metadata type="physical-accomp">
215           <xsl:value-of select="marc:subfield[@code='e']"/>
216         </pz:metadata>
217         <pz:metadata type="physical-unittype">
218           <xsl:value-of select="marc:subfield[@code='f']"/>
219         </pz:metadata>
220         <pz:metadata type="physical-unitsize">
221           <xsl:value-of select="marc:subfield[@code='g']"/>
222         </pz:metadata>
223         <pz:metadata type="physical-specified">
224           <xsl:value-of select="marc:subfield[@code='3']"/>
225         </pz:metadata>
226       </xsl:for-each>
227
228       <xsl:for-each select="marc:datafield[@tag='440']">
229         <pz:metadata type="series-title">
230           <xsl:value-of select="marc:subfield[@code='a']"/>
231         </pz:metadata>
232       </xsl:for-each>
233
234       <xsl:for-each select="marc:datafield[@tag &gt;= 500 and @tag &lt;= 599]
235                             [@tag != '506' and @tag != '530' and
236                             @tag != '540' and @tag != '546'
237                             and @tag != '522']">
238         <!-- The tag attribute below will be preserved -->
239         <pz:metadata type="description" tag="{@tag}">
240             <xsl:value-of select="*/text()"/>
241         </pz:metadata>
242       </xsl:for-each>
243       
244       <xsl:for-each select="marc:datafield[@tag='650' or @tag='653']">
245         <pz:metadata type="subject">
246           <xsl:value-of select="marc:subfield[@code='a']"/>
247         </pz:metadata>
248       </xsl:for-each>
249
250       <xsl:for-each select="marc:datafield[@tag='856']">
251         <pz:metadata type="electronic-url">
252           <xsl:value-of select="marc:subfield[@code='u']"/>
253         </pz:metadata>
254         <pz:metadata type="electronic-text">
255           <xsl:value-of select="marc:subfield[@code='y']"/>
256         </pz:metadata>
257         <pz:metadata type="electronic-note">
258           <xsl:value-of select="marc:subfield[@code='z']"/>
259         </pz:metadata>
260       </xsl:for-each>
261
262       <xsl:for-each select="marc:datafield[@tag='773']">
263         <pz:metadata type="citation">
264           <xsl:for-each select="*">
265             <xsl:value-of select="normalize-space(.)"/>
266             <xsl:text> </xsl:text>
267           </xsl:for-each>
268         </pz:metadata>
269       </xsl:for-each>
270
271       <pz:metadata type="medium">
272         <xsl:value-of select="$medium"/>
273       </pz:metadata>
274       
275       <xsl:if test="$fulltext_a">
276         <pz:metadata type="fulltext">
277           <xsl:value-of select="$fulltext_a"/>
278         </pz:metadata>
279       </xsl:if>
280
281       <xsl:if test="$fulltext_b">
282         <pz:metadata type="fulltext">
283           <xsl:value-of select="$fulltext_b"/>
284         </pz:metadata>
285       </xsl:if>
286     </pz:record>
287   </xsl:template>
288
289 </xsl:stylesheet>
290       </xslt>
291     </service>