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