Initial metaproxy setup for bibframe - part of MP-553
[mp-xquery-moved-to-github.git] / bibframe / xsl / sru.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:dc="http://www.loc.gov/zing/srw/dcschema/v1.0/"
5                 xmlns:zr="http://explain.z3950.org/dtd/2.0/"
6                 xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/"
7                 version="1.0">
8
9   <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
10
11   <xsl:template match="text()"/>
12
13   <xsl:template match="/">
14     <xsl:call-template name="html"/>
15   </xsl:template>
16
17   <xsl:template name="html">
18     <html>
19       <head>
20         <title>
21           <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
22         </title>
23         <link href="css.css" rel="stylesheet"
24               type="text/css" media="screen, all"/>
25       </head>
26       <body>
27         <div class="body">
28           <xsl:apply-templates/>
29         </div>
30       </body>
31     </html>
32   </xsl:template>
33
34   <xsl:template match="zr:explain">
35     <xsl:call-template name="dbinfo"/>
36     <xsl:call-template name="diagnostic"/>
37     <xsl:call-template name="indexinfo"/>
38     <xsl:call-template name="relationinfo"/>
39     <xsl:call-template name="searchform"/>
40   </xsl:template>
41
42   <xsl:template match="srw:searchRetrieveResponse">
43     <h2>Search Results</h2>
44     <xsl:call-template name="diagnostic"/>
45     <xsl:call-template name="displaysearch"/>
46   </xsl:template>
47
48   <xsl:template name="dbinfo">
49     <div class="dbinfo">
50       <h1><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
51       </h1>
52       <h2><xsl:value-of select="//zr:explain/zr:databaseInfo/zr:description"/>
53       </h2>
54       <h4>
55         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:author"/>
56         <br/>
57         <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:history"/>
58       </h4>
59     </div>
60   </xsl:template>
61
62   <xsl:template name="searchform">
63     <div class="searchform">
64       <form name="searchform"  method="get"> <!-- action=".." -->
65         <input type="hidden" name="version" value="1.1"/>
66         <input type="hidden" name="operation" value="searchRetrieve"/>
67         <div class="query">
68           <input type="text" name="query"/>
69         </div>
70         <div class="parameters">
71           <xsl:text>startRecord: </xsl:text>
72           <input type="text" name="startRecord" value="1"/>
73           <xsl:text> maximumRecords: </xsl:text>
74           <input type="text" name="maximumRecords" value="5"/>
75           <xsl:text> recordSchema: </xsl:text>
76           <select name="recordSchema">
77           <xsl:for-each select="//zr:schemaInfo/zr:schema">
78             <option value="{@name}">
79               <xsl:value-of select="zr:title"/>
80             </option>
81           </xsl:for-each>
82           </select>
83           <xsl:text> recordPacking: </xsl:text>
84           <select name="recordPacking">
85             <option value="string">string</option>
86             <option value="xml">XML</option>
87           </select>
88           <xsl:text> stylesheet: </xsl:text>
89           <select name="stylesheet">
90             <option value="/xsl/sru.xsl">SRU</option>
91             <option value="">NONE</option>
92           </select>
93         </div>
94
95         <div class="submit">
96           <input type="submit" value="Send Search Request"/>
97         </div>
98       </form>
99     </div>
100   </xsl:template>
101
102   <xsl:template name="indexinfo">
103      <div class="dbinfo">
104        <xsl:for-each
105           select="//zr:indexInfo/zr:index[zr:map/zr:name/@set]">
106         <xsl:variable name="index">
107           <xsl:value-of select="zr:map/zr:name/@set"/>
108           <xsl:text>.</xsl:text>
109           <xsl:value-of select="zr:map/zr:name/text()"/>
110         </xsl:variable>
111         <b><xsl:value-of select="$index"/><br/></b>
112       </xsl:for-each>
113      </div>
114   </xsl:template>
115
116
117   <xsl:template name="relationinfo">
118     <!--
119       <xsl:variable name="defrel"
120                     select="//zr:configInfo/zr:default[@type='relation']"/>
121       <b><xsl:value-of select="$defrel"/><br/></b>
122       -->
123       <xsl:for-each select="//zr:configInfo/zr:supports[@type='relation']">
124         <xsl:variable name="rel" select="text()"/>
125         <b><xsl:value-of select="$rel"/><br/></b>
126       </xsl:for-each>
127   </xsl:template>
128
129
130   <!-- diagnostics -->
131   <xsl:template name="diagnostic">
132     <xsl:for-each select="//diag:diagnostic">
133      <div class="diagnostic">
134         <!-- <xsl:value-of select="diag:uri"/> -->
135         <xsl:text> </xsl:text>
136         <xsl:value-of select="diag:message"/>
137         <xsl:text>: </xsl:text>
138         <xsl:value-of select="diag:details"/>
139       </div>
140     </xsl:for-each>
141   </xsl:template>
142
143   <xsl:template name="displaysearch">
144     <div class="searchresults">
145       <xsl:for-each select="srw:numberOfRecords">
146         <h4>
147           <xsl:text>Number of Records: </xsl:text>
148           <xsl:value-of select="."/>
149         </h4>
150       </xsl:for-each>
151       <xsl:for-each select="srw:nextRecordPosition">
152         <h4>
153           <xsl:text>Next Record Position: </xsl:text>
154           <xsl:value-of select="."/>
155          </h4>
156       </xsl:for-each>
157
158       <xsl:for-each select="srw:records">
159         <xsl:for-each select="srw:record">
160           <div class="record">
161             <p>
162               <xsl:text>Record: </xsl:text>
163               <xsl:value-of select="srw:recordPosition"/>
164               <xsl:text> : </xsl:text>
165               <xsl:value-of select="srw:recordSchema"/>
166               <xsl:text> : </xsl:text>
167               <xsl:value-of select="srw:recordPacking"/>
168             </p>
169             <p>
170               <pre>
171                 <xsl:value-of select="srw:recordData"/>
172               </pre>
173             </p>
174           </div>
175         </xsl:for-each>
176       </xsl:for-each>
177     </div>
178   </xsl:template>
179
180   <xsl:template name="displayscan">
181     <div class="scanresults">
182
183       <xsl:for-each select="srw:terms">
184         <xsl:for-each select="srw:term">
185           <div class="term">
186
187               <!-- <xsl:text>Term: </xsl:text> -->
188               <xsl:for-each select="srw:displayTerm">
189                 <xsl:value-of select="."/>
190                 <xsl:text> : </xsl:text>
191               </xsl:for-each>
192
193               <xsl:for-each select="srw:value">
194                 <xsl:value-of select="."/>
195               </xsl:for-each>
196
197               <xsl:for-each select="srw:numberOfRecords">
198                 <xsl:text> (</xsl:text>
199                 <xsl:value-of select="."/>
200                 <xsl:text>)</xsl:text>
201               </xsl:for-each>
202
203               <xsl:for-each select="srw:extraTermData">
204                 <xsl:text> - </xsl:text>
205                 <xsl:value-of select="."/>
206               </xsl:for-each>
207
208           </div>
209         </xsl:for-each>
210       </xsl:for-each>
211
212     </div>
213   </xsl:template>
214
215
216 </xsl:stylesheet>