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