Show only first instance of Date/Place
[mp-xquery-moved-to-github.git] / bibframe / xsl / briefDisplay.xsl
1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 xmlns:srw="http://www.loc.gov/zing/srw/"
4                 xmlns:sru="http://docs.oasis-open.org/ns/search-ws/sruResponse"
5                 xmlns:dc="http://www.loc.gov/zing/srw/dcschema/v1.0/"
6                 xmlns:zr="http://explain.z3950.org/dtd/2.0/"
7                 xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/"
8                 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
9                 xmlns:bf="http://bibframe.org/vocab/"
10                 version="1.0">
11
12   <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
13
14   <xsl:template match="text()"/>
15
16   <xsl:template match="rdf:RDF">
17     <table>
18       <xsl:for-each select="bf:Work/bf:creator">
19         <xsl:variable
20             name="resource" select="./@rdf:resource"/>
21         <tr>
22           <td><b>Creator:</b></td>
23           <td>
24             <xsl:value-of select="//*[@rdf:about=$resource]/bf:label"/>
25           </td>
26         </tr>
27       </xsl:for-each>
28       <xsl:for-each select="bf:Work/bf:workTitle">
29         <xsl:variable
30             name="resource" select="./@rdf:resource"/>
31         <tr>
32           <td><b>Work Title:</b></td>
33           <td>
34             <xsl:value-of select="//*[@rdf:about=$resource]/bf:titleValue"/>
35           </td>
36         </tr>
37       </xsl:for-each>
38       <xsl:for-each select="bf:Instance[1]/bf:providerStatement">
39         <tr>
40           <td><b>Date/Place:</b></td>
41           <td>
42             <xsl:value-of select="."/>
43           </td>
44         </tr>
45       </xsl:for-each>
46     </table>
47   </xsl:template>
48
49   <xsl:template match="/">
50     <xsl:call-template name="html"/>
51   </xsl:template>
52
53   <xsl:template name="html">
54     <html>
55       <head>
56         <title>
57           BIBFRAME demo
58         </title>
59         <link href="css.css" rel="stylesheet"
60               type="text/css" media="screen, all"/>
61       </head>
62       <body>
63         <div class="body">
64           <xsl:apply-templates/>
65         </div>
66       </body>
67     </html>
68   </xsl:template>
69
70   <xsl:template match="zr:explain">
71     <xsl:call-template name="diagnostic"/>
72     <xsl:call-template name="searchform-simple"/>
73   </xsl:template>
74
75   <xsl:template match="srw:searchRetrieveResponse">
76     <h2>Search Results</h2>
77     <xsl:call-template name="diagnostic"/>
78     <xsl:call-template name="displaysearch"/>
79   </xsl:template>
80
81   <xsl:template name="dbinfo">
82     <div class="dbinfo">
83       <h1><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
84       </h1>
85       <h2><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:description"/>
86       </h2>
87       <h4>
88         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:author"/>
89         <br/>
90         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:history"/>
91       </h4>
92     </div>
93   </xsl:template>
94
95   <xsl:template name="searchform-simple">
96     <div class="searchform">
97       <form name="searchform"  method="get"> <!-- action=".." -->
98         <input type="hidden" name="version" value="1.2"/>
99         <input type="hidden" name="operation" value="searchRetrieve"/>
100         <input type="hidden" name="stylesheet">
101           <xsl:attribute name="value">
102             <xsl:value-of select="//srw:echoedExplainRequest/srw:stylesheet"/>
103             <xsl:value-of select="//sru:echoedExplainRequest/sru:stylesheet"/>
104           </xsl:attribute>
105         </input>
106         <input type="text" name="query"/>
107         <input name="version" value="1.2" type="hidden"/>
108         <input name="operation" value="searchRetrieve" type="hidden"/>
109         <input name="startRecord" value="1" type="hidden"/>
110         <input name="maximumRecords" value="10" type="hidden"/>
111         <input name="recordSchema" value="bibframe" type="hidden"/>
112         <input type="submit" value="submit"/>
113       </form>
114     </div>
115   </xsl:template>
116
117   <xsl:template name="searchform-full">
118     <div class="searchform">
119       <form name="searchform"  method="get"> <!-- action=".." -->
120         <input type="hidden" name="version" value="1.2"/>
121         <input type="hidden" name="operation" value="searchRetrieve"/>
122         <input type="hidden" name="stylesheet">
123           <xsl:attribute name="value">
124             <xsl:value-of select="//srw:echoedExplainRequest/srw:stylesheet"/>
125             <xsl:value-of select="//sru:echoedExplainRequest/sru:stylesheet"/>
126           </xsl:attribute>
127         </input>
128         <div class="query">
129           <input type="text" name="query"/>
130         </div>
131         <div class="parameters">
132           <xsl:text>startRecord: </xsl:text>
133           <input size="10" type="text" name="startRecord" value="1"/>
134           <xsl:text> maximumRecords: </xsl:text>
135           <input size="10" type="text" name="maximumRecords" value="5"/>
136           <xsl:text> recordSchema: </xsl:text>
137           <select name="recordSchema">
138           <xsl:for-each select="//zr:schemaInfo/zr:schema">
139             <option value="{@name}">
140               <xsl:value-of select="zr:title"/>
141             </option>
142           </xsl:for-each>
143           </select>
144           <xsl:text> recordPacking: </xsl:text>
145           <select name="recordPacking">
146             <option value="xml">XML</option>
147             <option value="string">string</option>
148           </select>
149
150         </div>
151
152         <div class="submit">
153           <input type="submit" value="Send Search Request"/>
154         </div>
155       </form>
156     </div>
157   </xsl:template>
158
159   <xsl:template name="indexinfo">
160      <div class="dbinfo">
161        <xsl:for-each
162           select="//zr:indexInfo/zr:index[zr:map/zr:name/@set]">
163         <xsl:variable name="index">
164           <xsl:value-of select="zr:map/zr:name/@set"/>
165           <xsl:text>.</xsl:text>
166           <xsl:value-of select="zr:map/zr:name/text()"/>
167         </xsl:variable>
168         <b><xsl:value-of select="$index"/><br/></b>
169       </xsl:for-each>
170      </div>
171   </xsl:template>
172
173
174   <xsl:template name="relationinfo">
175     <!--
176       <xsl:variable name="defrel"
177                     select="//zr:configInfo/zr:default[@type='relation']"/>
178       <b><xsl:value-of select="$defrel"/><br/></b>
179       -->
180       <xsl:for-each select="//zr:configInfo/zr:supports[@type='relation']">
181         <xsl:variable name="rel" select="text()"/>
182         <b><xsl:value-of select="$rel"/><br/></b>
183       </xsl:for-each>
184   </xsl:template>
185
186
187   <!-- diagnostics -->
188   <xsl:template name="diagnostic">
189     <xsl:for-each select="//diag:diagnostic">
190      <div class="diagnostic">
191         <!-- <xsl:value-of select="diag:uri"/> -->
192         <xsl:text> </xsl:text>
193         <xsl:value-of select="diag:message"/>
194         <xsl:text>: </xsl:text>
195         <xsl:value-of select="diag:details"/>
196       </div>
197     </xsl:for-each>
198   </xsl:template>
199
200   <xsl:template name="searchform-refine">
201     <div class="searchform">
202       <form name="searchform"  method="get"> <!-- action=".." -->
203         <input type="hidden" name="version">
204           <xsl:attribute name="value">
205             <xsl:value-of
206                 select="//srw:echoedSearchRetrieveRequest/srw:version"/>
207           </xsl:attribute>
208         </input>
209         <input type="hidden" name="stylesheet">
210           <xsl:attribute name="value">
211             <xsl:value-of
212                 select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
213           </xsl:attribute>
214         </input>
215         <input type="text" name="query">
216           <xsl:attribute name="value">
217             <xsl:value-of
218                 select="//srw:echoedSearchRetrieveRequest/srw:query"/>
219           </xsl:attribute>
220         </input>
221         <input name="operation" value="searchRetrieve" type="hidden"/>
222         <input name="startRecord" value="1" type="hidden"/>
223         <input name="maximumRecords" value="10" type="hidden"/>
224         <input name="recordSchema" value="bibframe" type="hidden"/>
225         <input type="submit" value="submit"/>
226       </form>
227     </div>
228   </xsl:template>
229
230   <xsl:template name="new-search-link">
231     <form name="newsearch" method="get">
232       <input type="hidden" name="version">
233         <xsl:attribute name="value">
234           <xsl:value-of
235               select="//srw:echoedSearchRetrieveRequest/srw:version"/>
236         </xsl:attribute>
237       </input>
238       <input type="hidden" name="stylesheet">
239         <xsl:attribute name="value">
240           <xsl:value-of
241               select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
242         </xsl:attribute>
243       </input>
244
245       <input type="submit">
246         <xsl:attribute name="value">
247           <xsl:text>New Query</xsl:text>
248         </xsl:attribute>
249       </input>
250     </form>
251   </xsl:template>
252
253   <xsl:template name="next-records">
254     <xsl:for-each select="srw:nextRecordPosition">
255       <form name="nextlink" method="get">
256         <input type="hidden" name="version">
257           <xsl:attribute name="value">
258             <xsl:value-of
259                 select="//srw:echoedSearchRetrieveRequest/srw:version"/>
260           </xsl:attribute>
261         </input>
262         <input type="hidden" name="operation" value="searchRetrieve"/>
263         <input type="hidden" name="query">
264           <xsl:attribute name="value">
265             <xsl:value-of
266                 select="//srw:echoedSearchRetrieveRequest/srw:query"/>
267           </xsl:attribute>
268         </input>
269         <input type="hidden" name="recordPacking">
270           <xsl:attribute name="value">
271             <xsl:value-of select="srw:recordPacking"/>
272           </xsl:attribute>
273         </input>
274         <input type="hidden" name="recordSchema">
275           <xsl:attribute name="value">
276             <xsl:value-of
277                 select="//srw:echoedSearchRetrieveRequest/srw:recordSchema"/>
278           </xsl:attribute>
279         </input>
280         <input type="hidden" name="stylesheet">
281           <xsl:attribute name="value">
282             <xsl:value-of
283                 select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
284           </xsl:attribute>
285         </input>
286         <input type="hidden" name="startRecord">
287           <xsl:attribute name="value">
288             <xsl:value-of select="."/>
289           </xsl:attribute>
290         </input>
291         <input type="hidden" name="maximumRecords">
292           <xsl:attribute name="value">
293             <xsl:value-of
294                 select="//srw:echoedSearchRetrieveRequest/srw:maximumRecords"/>
295           </xsl:attribute>
296         </input>
297         <input type="submit">
298           <xsl:attribute name="value">
299             <xsl:text>Next</xsl:text>
300           </xsl:attribute>
301         </input>
302       </form>
303     </xsl:for-each>
304   </xsl:template>
305
306   <xsl:template name="displaysearch">
307     <div class="searchresults">
308       <xsl:for-each select="srw:numberOfRecords">
309         <h4>
310           <xsl:text>Number of Records: </xsl:text>
311           <xsl:value-of select="."/>
312         </h4>
313       </xsl:for-each>
314
315       <xsl:call-template name="searchform-refine"/>
316
317       <xsl:call-template name="next-records"/>
318
319       <xsl:for-each select="srw:records">
320         <xsl:for-each select="srw:record">
321           <hr/>
322           <div class="record">
323             <h4>
324               <xsl:text>Record </xsl:text>
325               <xsl:value-of select="srw:recordPosition"/>
326             </h4>
327             <p>
328               <xsl:if test="srw:recordPacking='string'">
329                 <pre>
330                   <xsl:value-of select="srw:recordData"/>
331                 </pre>
332               </xsl:if>
333               <xsl:if test="srw:recordPacking='xml'">
334                 <xsl:choose>
335                   <xsl:when test="srw:recordSchema='marcxml'">
336                     <xsl:text>MARCXML</xsl:text>
337                   </xsl:when>
338                   <xsl:when test="srw:recordSchema='bibframe'">
339                     <xsl:apply-templates select="srw:recordData"/>
340                   </xsl:when>
341                 </xsl:choose>
342               </xsl:if>
343             </p>
344           </div>
345           <table>
346             <tr>
347               <td>
348               <form name="fulllink" method="get">
349                 <input type="hidden" name="version">
350                   <xsl:attribute name="value">
351                     <xsl:value-of
352                         select="//srw:echoedSearchRetrieveRequest/srw:version"/>
353                   </xsl:attribute>
354                 </input>
355                 <input type="hidden" name="operation" value="searchRetrieve"/>
356                 <input type="hidden" name="query">
357                   <xsl:attribute name="value">
358                     <xsl:value-of
359                         select="//srw:echoedSearchRetrieveRequest/srw:query"/>
360                   </xsl:attribute>
361                 </input>
362                 <input type="hidden" name="recordPacking">
363                   <xsl:attribute name="value">
364                     <xsl:value-of select="srw:recordPacking"/>
365                   </xsl:attribute>
366                 </input>
367                 <input type="hidden" name="recordSchema">
368                   <xsl:attribute name="value">
369                     <xsl:value-of select="srw:recordSchema"/>
370                   </xsl:attribute>
371                 </input>
372                 <input type="hidden" name="stylesheet" value="/fullDisplay.xsl"/>
373                 <input type="hidden" name="startRecord">
374                   <xsl:attribute name="value">
375                     <xsl:value-of select="srw:recordPosition"/>
376                   </xsl:attribute>
377                 </input>
378                 <input type="hidden" name="maximumRecords" value="1"/>
379                 <input type="submit">
380                   <xsl:attribute name="value">
381                     <xsl:text>Full Record </xsl:text>
382                     <xsl:value-of select="srw:recordPosition"/>
383                   </xsl:attribute>
384                 </input>
385               </form>
386               </td>
387               <td>
388               <form name="rawlink" method="get">
389                 <input type="hidden" name="version">
390                   <xsl:attribute name="value">
391                     <xsl:value-of
392                         select="//srw:echoedSearchRetrieveRequest/srw:version"/>
393                   </xsl:attribute>
394                 </input>
395                 <input type="hidden" name="operation" value="searchRetrieve"/>
396                 <input type="hidden" name="query">
397                   <xsl:attribute name="value">
398                     <xsl:value-of
399                         select="//srw:echoedSearchRetrieveRequest/srw:query"/>
400                   </xsl:attribute>
401                 </input>
402                 <input type="hidden" name="recordPacking">
403                   <xsl:attribute name="value">
404                     <xsl:value-of select="srw:recordPacking"/>
405                   </xsl:attribute>
406                 </input>
407                 <input type="hidden" name="recordSchema">
408                   <xsl:attribute name="value">
409                     <xsl:value-of select="srw:recordSchema"/>
410                   </xsl:attribute>
411                 </input>
412                 <input type="hidden" name="startRecord">
413                   <xsl:attribute name="value">
414                     <xsl:value-of select="srw:recordPosition"/>
415                   </xsl:attribute>
416                 </input>
417                 <input type="hidden" name="maximumRecords" value="1"/>
418                 <input type="submit">
419                   <xsl:attribute name="value">
420                     <xsl:text>Raw Record </xsl:text>
421                     <xsl:value-of select="srw:recordPosition"/>
422                   </xsl:attribute>
423                 </input>
424               </form>
425               </td>
426             </tr>
427           </table>
428         </xsl:for-each>
429       </xsl:for-each>
430
431       <xsl:call-template name="next-records"/>
432
433     </div>
434   </xsl:template>
435
436 </xsl:stylesheet>