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