1521af10198edcdb5dd9b4f09ee726bccb97eef1
[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>Author</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>Work Title</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/bf:providerStatement">
39         <tr>
40           <td>Date/Place</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           <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
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="dbinfo"/>
72     <xsl:call-template name="diagnostic"/>
73     <xsl:call-template name="searchform"/>
74   </xsl:template>
75
76   <xsl:template match="srw:searchRetrieveResponse">
77     <h2>Search Results</h2>
78     <xsl:call-template name="diagnostic"/>
79     <xsl:call-template name="displaysearch"/>
80   </xsl:template>
81
82   <xsl:template name="dbinfo">
83     <div class="dbinfo">
84       <h1><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
85       </h1>
86       <h2><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:description"/>
87       </h2>
88       <h4>
89         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:author"/>
90         <br/>
91         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:history"/>
92       </h4>
93     </div>
94   </xsl:template>
95
96   <xsl:template name="searchform">
97     <div class="searchform">
98       <form name="searchform"  method="get"> <!-- action=".." -->
99         <input type="hidden" name="version" value="1.2"/>
100         <input type="hidden" name="operation" value="searchRetrieve"/>
101         <input type="hidden" name="stylesheet">
102           <xsl:attribute name="value">
103             <xsl:value-of select="//srw:echoedExplainRequest/srw:stylesheet"/>
104             <xsl:value-of select="//sru:echoedExplainRequest/sru:stylesheet"/>
105           </xsl:attribute>
106         </input>
107         <div class="query">
108           <input type="text" name="query"/>
109         </div>
110         <div class="parameters">
111           <xsl:text>startRecord: </xsl:text>
112           <input size="10" type="text" name="startRecord" value="1"/>
113           <xsl:text> maximumRecords: </xsl:text>
114           <input size="10" type="text" name="maximumRecords" value="5"/>
115           <xsl:text> recordSchema: </xsl:text>
116           <select name="recordSchema">
117           <xsl:for-each select="//zr:schemaInfo/zr:schema">
118             <option value="{@name}">
119               <xsl:value-of select="zr:title"/>
120             </option>
121           </xsl:for-each>
122           </select>
123           <xsl:text> recordPacking: </xsl:text>
124           <select name="recordPacking">
125             <option value="xml">XML</option>
126             <option value="string">string</option>
127           </select>
128
129         </div>
130
131         <div class="submit">
132           <input type="submit" value="Send Search Request"/>
133         </div>
134       </form>
135     </div>
136   </xsl:template>
137
138   <xsl:template name="indexinfo">
139      <div class="dbinfo">
140        <xsl:for-each
141           select="//zr:indexInfo/zr:index[zr:map/zr:name/@set]">
142         <xsl:variable name="index">
143           <xsl:value-of select="zr:map/zr:name/@set"/>
144           <xsl:text>.</xsl:text>
145           <xsl:value-of select="zr:map/zr:name/text()"/>
146         </xsl:variable>
147         <b><xsl:value-of select="$index"/><br/></b>
148       </xsl:for-each>
149      </div>
150   </xsl:template>
151
152
153   <xsl:template name="relationinfo">
154     <!--
155       <xsl:variable name="defrel"
156                     select="//zr:configInfo/zr:default[@type='relation']"/>
157       <b><xsl:value-of select="$defrel"/><br/></b>
158       -->
159       <xsl:for-each select="//zr:configInfo/zr:supports[@type='relation']">
160         <xsl:variable name="rel" select="text()"/>
161         <b><xsl:value-of select="$rel"/><br/></b>
162       </xsl:for-each>
163   </xsl:template>
164
165
166   <!-- diagnostics -->
167   <xsl:template name="diagnostic">
168     <xsl:for-each select="//diag:diagnostic">
169      <div class="diagnostic">
170         <!-- <xsl:value-of select="diag:uri"/> -->
171         <xsl:text> </xsl:text>
172         <xsl:value-of select="diag:message"/>
173         <xsl:text>: </xsl:text>
174         <xsl:value-of select="diag:details"/>
175       </div>
176     </xsl:for-each>
177   </xsl:template>
178
179   <xsl:template name="displaysearch">
180     <div class="searchresults">
181       <xsl:for-each select="srw:numberOfRecords">
182         <h4>
183           <xsl:text>Number of Records: </xsl:text>
184           <xsl:value-of select="."/>
185         </h4>
186       </xsl:for-each>
187       <xsl:for-each select="srw:nextRecordPosition">
188         <h4>
189           <xsl:text>Next Record Position: </xsl:text>
190           <xsl:value-of select="."/>
191          </h4>
192       </xsl:for-each>
193
194       <xsl:for-each select="srw:records">
195         <xsl:for-each select="srw:record">
196           <div class="record">
197             <p>
198               <xsl:text>Record: </xsl:text>
199               <xsl:value-of select="srw:recordPosition"/>
200               <xsl:text> : </xsl:text>
201               <xsl:value-of select="srw:recordSchema"/>
202               <xsl:text> : </xsl:text>
203               <xsl:value-of select="srw:recordPacking"/>
204             </p>
205             <p>
206               <xsl:if test="srw:recordPacking='string'">
207                 <pre>
208                   <xsl:value-of select="srw:recordData"/>
209                 </pre>
210               </xsl:if>
211               <xsl:if test="srw:recordPacking='xml'">
212                 <xsl:choose>
213                   <xsl:when test="srw:recordSchema='marcxml'">
214                     <xsl:text>MARCXML</xsl:text>
215                   </xsl:when>
216                   <xsl:when test="srw:recordSchema='bibframe'">
217                     <xsl:apply-templates select="srw:recordData"/>
218                   </xsl:when>
219                 </xsl:choose>
220               </xsl:if>
221
222               <form name="fulllink" method="get">
223                 <input type="hidden" name="version" value="1.2"/>
224                 <input type="hidden" name="operation" value="searchRetrieve"/>
225                 <input type="hidden" name="query">
226                   <xsl:attribute name="value">
227                     <xsl:value-of
228                         select="//srw:echoedSearchRetrieveRequest/srw:query"/>
229                   </xsl:attribute>
230                 </input>
231                 <input type="hidden" name="recordPacking">
232                   <xsl:attribute name="value">
233                     <xsl:value-of select="srw:recordPacking"/>
234                   </xsl:attribute>
235                 </input>
236                 <input type="hidden" name="recordSchema">
237                   <xsl:attribute name="value">
238                     <xsl:value-of select="srw:recordSchema"/>
239                   </xsl:attribute>
240                 </input>
241                 <input type="hidden" name="stylesheet" value="/fullDisplay.xsl"/>
242                 <input type="hidden" name="startRecord">
243                   <xsl:attribute name="value">
244                     <xsl:value-of select="srw:recordPosition"/>
245                   </xsl:attribute>
246                 </input>
247                 <input type="hidden" name="maximumRecords" value="1"/>
248                 <input type="submit">
249                   <xsl:attribute name="value">
250                     <xsl:text>Full Record </xsl:text>
251                     <xsl:value-of select="srw:recordPosition"/>
252                   </xsl:attribute>
253                 </input>
254               </form>
255               <form name="rawlink" method="get">
256                 <input type="hidden" name="version" value="1.2"/>
257                 <input type="hidden" name="operation" value="searchRetrieve"/>
258                 <input type="hidden" name="query">
259                   <xsl:attribute name="value">
260                     <xsl:value-of
261                         select="//srw:echoedSearchRetrieveRequest/srw:query"/>
262                   </xsl:attribute>
263                 </input>
264                 <input type="hidden" name="recordPacking">
265                   <xsl:attribute name="value">
266                     <xsl:value-of select="srw:recordPacking"/>
267                   </xsl:attribute>
268                 </input>
269                 <input type="hidden" name="recordSchema">
270                   <xsl:attribute name="value">
271                     <xsl:value-of select="srw:recordSchema"/>
272                   </xsl:attribute>
273                 </input>
274                 <input type="hidden" name="startRecord">
275                   <xsl:attribute name="value">
276                     <xsl:value-of select="srw:recordPosition"/>
277                   </xsl:attribute>
278                 </input>
279                 <input type="hidden" name="maximumRecords" value="1"/>
280                 <input type="submit">
281                   <xsl:attribute name="value">
282                     <xsl:text>Raw Record </xsl:text>
283                     <xsl:value-of select="srw:recordPosition"/>
284                   </xsl:attribute>
285                 </input>
286               </form>
287             </p>
288           </div>
289         </xsl:for-each>
290       </xsl:for-each>
291     </div>
292   </xsl:template>
293
294 </xsl:stylesheet>