[maven-release-plugin] prepare for next development iteration
[cql-java-moved-to-github.git] / etc / xslt / explainResponse.xsl
1 <?xml version="1.0" encoding="utf-8"?>\r
2 <xsl:stylesheet version="1.0"\r
3     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
4     xmlns:srw="http://www.loc.gov/zing/srw/"\r
5     xmlns:zr="http://explain.z3950.org/dtd/2.0/"\r
6     xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/">\r
7 \r
8   <!--      Author: Rob Sanderson (azaroth@liv.ac.uk)\r
9            Version:  0.6\r
10       Last Updated:  27/11/2003\r
11            Licence:  GPL \r
12     \r
13     Updated by Hedzer Westra (Adlib Information Systems) on 07-12-2004\r
14     \r
15     -->\r
16 \r
17   <xsl:output method="html"/>\r
18 \r
19   <xsl:template match="/srw:explainResponse">\r
20     <html>\r
21       <head>\r
22         <title>\r
23           <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title"/>\r
24           </title>\r
25         <style>\r
26           H2 {font-family: sans-serif; color: #FF5500; background-color: #eeeeff; padding-top: 10px; padding-bottom: 10px; border: 1px solid #3333FF}\r
27           H3 { font-family: sans-serif; color: #F65500; text-indent: 20px; border-left: solid 1px #3333FF; border-top: solid 1px #3333FF; padding-top: 5px }\r
28           .paramTable { vertical-align: top; border: 1px solid; padding: 3px; border-collapse: collapse }\r
29           .exampleTable { vertical-align: top; border: 1px solid; padding: 3px; border-collapse: collapse; background-color: #eeeeff}\r
30           \r
31           .paramTable TD {border: 1px solid}\r
32           .exampleTable TD {border: 1px solid}\r
33           TH {border: 1px solid; background-color: #eeeeff}\r
34 \r
35         </style>\r
36 \r
37         <script>\r
38           <xsl:text>\r
39             function mungeForm() {\r
40             inform = document.CQLForm;\r
41             outform = document.SRUForm;\r
42             max = inform.maxIndex.value;\r
43             cql = "";\r
44             prevIdx = 0;\r
45             // Step through elements in form to create CQL\r
46             for (var idx = 1; idx &lt;= max; idx++) {\r
47               term = inform["term"+idx].value;\r
48               if (term) {\r
49                 if (prevIdx) {\r
50                   cql += " " + inform["bool" + prevIdx].value + " "\r
51                 }\r
52                 if (term.indexOf(' ')) {\r
53                   term = '"' + term + '"';\r
54                 }\r
55                 cql += inform["index" + idx].value + " " + inform["relat" + idx].value + " " + term\r
56                 prevIdx = idx\r
57              }\r
58             }\r
59             if (!cql) {\r
60             alert("At least one term is required to search.");\r
61             return false;\r
62             }\r
63             outform.query.value = cql\r
64             outform.submit();\r
65             return false;\r
66             }\r
67 \r
68             function mungeScanForm() {\r
69             inform = document.ScanIndexes;\r
70             outform = document.ScanSubmit;\r
71             index = inform.scanIndex.value;\r
72             term = inform.term.value;\r
73             relat = inform.relat.value;\r
74             outform.scanClause.value = index + " " + relat +" \"" + term + "\""\r
75             outform.submit();\r
76             return false;\r
77             }\r
78 \r
79           </xsl:text>\r
80         </script>\r
81       </head>\r
82       <body bgcolor="#FFFFFF">\r
83         <center>\r
84           <h2>\r
85             <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title"/>\r
86           <br/>\r
87             <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:implementation/zr:title"/>\r
88           </h2>\r
89         </center>\r
90 \r
91         <p>\r
92           <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:description"/>\r
93         </p>\r
94 \r
95         <xsl:apply-templates select="srw:diagnostics"/>\r
96 \r
97 <table width="100%" cellspacing="5">\r
98 <tr><td>\r
99 \r
100         <h3>Search</h3>\r
101 \r
102         <p>\r
103         <form name="CQLForm" onSubmit="return mungeForm();">\r
104           <input type="submit" value="Search" onClick="return mungeForm();"/>\r
105         <table class="paramTable">\r
106           <tr><th>Index</th><th>Relation</th><th>Term</th><th>Boolean</th></tr>\r
107           <input type="hidden" name="maxIndex">\r
108             <xsl:attribute name="value">\r
109               <xsl:value-of select="count(srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index)"/>\r
110             </xsl:attribute>\r
111           </input>\r
112           <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">\r
113             <xsl:sort select="."/>\r
114             <tr>\r
115               <td align="right">\r
116                 <b><xsl:value-of select="zr:title"/></b>\r
117                 <input type="hidden">\r
118                   <xsl:attribute name="name">index<xsl:value-of select="position()"/></xsl:attribute>\r
119                   <xsl:attribute name="value"><xsl:value-of select="zr:map[1]/zr:name/@set"/>.<xsl:value-of select="zr:map[1]/zr:name"/></xsl:attribute>\r
120                 </input>\r
121               </td>\r
122               <td>\r
123                 <select>\r
124                   <xsl:attribute name="name">relat<xsl:value-of select="position()"/></xsl:attribute>\r
125                   <option value="=">=</option>\r
126                   <option value="exact">exact</option>\r
127                   <option value="any">any</option>\r
128                   <option value="all">all</option>\r
129                   <option value="&lt;">&lt;</option>\r
130                   <option value="&gt;">&gt;</option>\r
131                   <option value="&lt;=">&lt;=</option>\r
132                   <option value="&gt;=">&gt;=</option>\r
133                   <option value="&lt;&gt;">not</option>\r
134                   <option value="broader">broader</option>\r
135                   <option value="narrower">narrower</option>\r
136                   <option value="generic">generic</option>\r
137                   <option value="realted">related</option>\r
138                   <option value="topterm">topterm</option>\r
139                   <option value="parents">parents</option>\r
140                 </select>\r
141               </td>\r
142               <td>\r
143                 <input type="text" value="">\r
144                   <xsl:attribute name="name">term<xsl:value-of select="position()"/></xsl:attribute>\r
145                 </input>\r
146               </td>\r
147               <td>\r
148                 <select>\r
149                   <xsl:attribute name="name">bool<xsl:value-of select="position()"/></xsl:attribute>\r
150                   <option value="and">and</option>\r
151                   <option value="or">or</option>\r
152                   <option value="not">not</option>\r
153                 </select>\r
154               </td>\r
155             </tr>\r
156           </xsl:for-each>\r
157         </table>\r
158       </form>\r
159 \r
160         <form method="GET" name="SRUForm" onSubmit="mungeForm()">\r
161         \r
162         <input type="hidden" name="query" value=""/>\r
163         <input type="hidden" name="version" value="1.1"/>\r
164         <input type="hidden" name="operation" value="searchRetrieve"/>\r
165         <input type="hidden" name="stylesheet" value="searchRetrieveResponse.xsl"/>\r
166         \r
167         <table>\r
168           <tr>\r
169             <td><b>Record Schema:</b>\r
170           </td>\r
171           <td>\r
172             <select name="recordSchema">\r
173               <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:schemaInfo/zr:schema">\r
174                 <option>\r
175                   <xsl:attribute name="value">\r
176                     <xsl:value-of select="@identifier"/>\r
177                   </xsl:attribute>\r
178                   <xsl:value-of select="zr:title"/>\r
179                 </option>\r
180               </xsl:for-each>\r
181             </select>\r
182           </td>\r
183         </tr>\r
184         <tr>\r
185           <td><b>Number of Records:</b></td>\r
186           <td>\r
187             <input type="text" name="maximumRecords">\r
188               <xsl:attribute name="value">\r
189               <xsl:choose>\r
190                 <xsl:when test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]'>\r
191                   <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]'/>\r
192                   </xsl:when>\r
193                 <xsl:otherwise>\r
194                   <xsl:text>1</xsl:text>\r
195                   </xsl:otherwise>\r
196                 </xsl:choose>\r
197               </xsl:attribute>\r
198             </input>\r
199           </td>\r
200         </tr>\r
201 \r
202         <tr>\r
203           <td><b>Record Position:</b></td>\r
204           <td>\r
205             <input type="text" name="startRecord" value="1"/>\r
206           </td>\r
207         </tr>\r
208         <tr>\r
209           <td><b>Result Set TTL:</b></td>\r
210           <td>\r
211             <input type="text" name="resultSetTTL" value="0"/>\r
212           </td>\r
213         </tr>\r
214 \r
215         <tr>\r
216           <td><b>Record Packing:</b></td>\r
217           <td>\r
218             <select name="recordPacking">\r
219               <option value="xml">XML</option>\r
220               <option value="string">String</option>\r
221             </select>\r
222           </td>\r
223         </tr>\r
224 \r
225         <tr>\r
226         <td><b>Record XPath:</b></td>\r
227         <td><input type="text" name="recordXPath" value = ""/></td>\r
228         </tr>   \r
229         <tr>\r
230 \r
231         <td><b>Sort Keys:</b></td>\r
232         <td><input type="text" name="sortKeys" value = ""/></td>\r
233         </tr>   \r
234 \r
235       </table>\r
236 \r
237           <input type="submit" value="Search" onClick="return mungeForm();"/>\r
238         </form>\r
239       </p>\r
240 \r
241 </td><td valign="top">\r
242 \r
243   <h3>Browse</h3>\r
244      <!-- Some browsers won't display when forms inside tables :( -->\r
245 \r
246      <form name="ScanIndexes" onSubmit="return mungeScanForm();">\r
247    <table>\r
248           <tr><th>Index</th><th>Relation</th><th>Term</th><th>Boolean</th></tr>\r
249      <tr>\r
250        <td><select name="scanIndex">\r
251          <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">\r
252            <xsl:sort select="."/>\r
253            <option>\r
254              <xsl:attribute name="value"><xsl:value-of select="zr:map[1]/zr:name/@set"/>.<xsl:value-of select="zr:map[1]/zr:name"/></xsl:attribute>\r
255                 <xsl:value-of select="zr:title"/>\r
256             </option>\r
257          </xsl:for-each>\r
258          </select>\r
259       </td>\r
260       <td><select name="relat">\r
261           <option value="=">=</option>\r
262           <option value="exact">exact</option>\r
263           <option value="any">any</option>\r
264           <option value="all">all</option>\r
265           <option value="&lt;">&lt;</option>\r
266           <option value="&gt;">&gt;</option>\r
267           <option value="&lt;=">&lt;=</option>\r
268           <option value="&gt;=">&gt;=</option>\r
269           <option value="&lt;&gt;">not</option>\r
270         </select>\r
271       </td>\r
272       <td><input name="term" type="text" value = ""/>\r
273       </td>\r
274     </tr>\r
275     </table>\r
276     </form>\r
277 \r
278     <form name="ScanSubmit" method="GET">\r
279           <xsl:attribute name="action">http://<xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:serverInfo/zr:host"/>:<xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:serverInfo/zr:port"/>/<xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:serverInfo/zr:database"/>\r
280         </xsl:attribute>\r
281     <table>\r
282     <tr>\r
283       <td>Response Position:</td>\r
284       <td>\r
285         <input type="text" name="responsePosition" value="1" size="5"/>\r
286       </td>\r
287     </tr>\r
288     <tr>\r
289       <td>Maximum Terms:</td>\r
290       <td>\r
291         <input type="text" name="maximumTerms" value="20" size="5"/>\r
292       </td>\r
293     </tr>\r
294     <tr>\r
295       <td colspan="2">\r
296          <input type="submit" value="Browse" onClick="return mungeScanForm();"/>\r
297       </td>\r
298     </tr>\r
299     </table>\r
300     <input type="hidden" name="operation" value="scan"/>\r
301     <input type="hidden" name="scanClause" value=""/>\r
302     <input type="hidden" name="version" value="1.1"/>\r
303     <input type="hidden" name="stylesheet" value="scanResponse.xsl"/>\r
304     </form>\r
305 \r
306 </td></tr>\r
307 </table>            \r
308 \r
309 \r
310       </body>\r
311     </html>\r
312   </xsl:template>\r
313 \r
314   <xsl:template match="srw:diagnostics">\r
315      <h3>Diagnostics</h3>\r
316      <xsl:apply-templates/>\r
317   </xsl:template>\r
318 \r
319 <xsl:template match="diag:diagnostic">\r
320 <table>\r
321 <xsl:apply-templates/>\r
322 </table>\r
323 </xsl:template>\r
324 <xsl:template match="diag:code">\r
325 <tr><td><b>Code:</b></td><td> <xsl:value-of select="."/></td></tr>\r
326 </xsl:template>\r
327 <xsl:template match="diag:message">\r
328 <tr><td><b>Message:</b></td><td><xsl:value-of select="."/></td></tr>\r
329 </xsl:template>\r
330 <xsl:template match="diag:details">\r
331 <tr><td><b>Details:</b></td><td><xsl:value-of select="."/></td></tr>\r
332 </xsl:template>\r
333 \r
334 </xsl:stylesheet>\r