Add refine search form
[mp-xquery-moved-to-github.git] / bibframe / xsl / briefDisplay.xsl
index b6b633d..6a63d97 100644 (file)
@@ -5,12 +5,47 @@
                 xmlns:dc="http://www.loc.gov/zing/srw/dcschema/v1.0/"
                 xmlns:zr="http://explain.z3950.org/dtd/2.0/"
                 xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/"
+                xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+               xmlns:bf="http://bibframe.org/vocab/"
                 version="1.0">
 
   <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
 
   <xsl:template match="text()"/>
 
+  <xsl:template match="rdf:RDF">
+    <table>
+      <xsl:for-each select="bf:Work/bf:creator">
+       <xsl:variable
+           name="resource" select="./@rdf:resource"/>
+       <tr>
+         <td><b>Creator:</b></td>
+         <td>
+           <xsl:value-of select="//*[@rdf:about=$resource]/bf:label"/>
+         </td>
+       </tr>
+      </xsl:for-each>
+      <xsl:for-each select="bf:Work/bf:workTitle">
+       <xsl:variable
+           name="resource" select="./@rdf:resource"/>
+       <tr>
+         <td><b>Work Title:</b></td>
+         <td>
+           <xsl:value-of select="//*[@rdf:about=$resource]/bf:titleValue"/>
+         </td>
+       </tr>
+      </xsl:for-each>
+      <xsl:for-each select="bf:Instance/bf:providerStatement">
+       <tr>
+         <td><b>Date/Place:</b></td>
+         <td>
+           <xsl:value-of select="."/>
+         </td>
+       </tr>
+      </xsl:for-each>
+    </table>
+  </xsl:template>
+
   <xsl:template match="/">
     <xsl:call-template name="html"/>
   </xsl:template>
@@ -19,7 +54,7 @@
     <html>
       <head>
         <title>
-          <xsl:value-of select="//zr:explain/zr:databaseInfo/zr:title"/>
+          BIBFRAME demo
         </title>
         <link href="css.css" rel="stylesheet"
               type="text/css" media="screen, all"/>
@@ -33,9 +68,8 @@
   </xsl:template>
 
   <xsl:template match="zr:explain">
-    <xsl:call-template name="dbinfo"/>
     <xsl:call-template name="diagnostic"/>
-    <xsl:call-template name="searchform"/>
+    <xsl:call-template name="searchform-simple"/>
   </xsl:template>
 
   <xsl:template match="srw:searchRetrieveResponse">
     </div>
   </xsl:template>
 
-  <xsl:template name="searchform">
+  <xsl:template name="searchform-simple">
+    <div class="searchform">
+      <form name="searchform"  method="get"> <!-- action=".." -->
+        <input type="hidden" name="version" value="1.2"/>
+        <input type="hidden" name="operation" value="searchRetrieve"/>
+       <input type="hidden" name="stylesheet">
+         <xsl:attribute name="value">
+           <xsl:value-of select="//srw:echoedExplainRequest/srw:stylesheet"/>
+           <xsl:value-of select="//sru:echoedExplainRequest/sru:stylesheet"/>
+         </xsl:attribute>
+       </input>
+       <input type="text" name="query"/>
+       <input name="version" value="1.2" type="hidden"/>
+       <input name="operation" value="searchRetrieve" type="hidden"/>
+       <input name="startRecord" value="1" type="hidden"/>
+       <input name="maximumRecords" value="10" type="hidden"/>
+       <input name="recordSchema" value="bibframe" type="hidden"/>
+       <input type="submit" value="submit"/>
+      </form>
+    </div>
+  </xsl:template>
+
+  <xsl:template name="searchform-full">
     <div class="searchform">
       <form name="searchform"  method="get"> <!-- action=".." -->
         <input type="hidden" name="version" value="1.2"/>
           </select>
           <xsl:text> recordPacking: </xsl:text>
           <select name="recordPacking">
-            <option value="string">string</option>
             <option value="xml">XML</option>
+            <option value="string">string</option>
           </select>
 
         </div>
     </xsl:for-each>
   </xsl:template>
 
+  <xsl:template name="searchform-refine">
+    <div class="searchform">
+      <form name="searchform"  method="get"> <!-- action=".." -->
+       <input type="hidden" name="version">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:version"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="stylesheet">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
+         </xsl:attribute>
+       </input>
+       <input type="text" name="query">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:query"/>
+         </xsl:attribute>
+       </input>
+       <input name="operation" value="searchRetrieve" type="hidden"/>
+       <input name="startRecord" value="1" type="hidden"/>
+       <input name="maximumRecords" value="10" type="hidden"/>
+       <input name="recordSchema" value="bibframe" type="hidden"/>
+       <input type="submit" value="submit"/>
+      </form>
+    </div>
+  </xsl:template>
+
+  <xsl:template name="new-search-link">
+    <form name="newsearch" method="get">
+      <input type="hidden" name="version">
+       <xsl:attribute name="value">
+         <xsl:value-of
+             select="//srw:echoedSearchRetrieveRequest/srw:version"/>
+       </xsl:attribute>
+      </input>
+      <input type="hidden" name="stylesheet">
+       <xsl:attribute name="value">
+         <xsl:value-of
+             select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
+       </xsl:attribute>
+      </input>
+
+      <input type="submit">
+       <xsl:attribute name="value">
+         <xsl:text>New Query</xsl:text>
+       </xsl:attribute>
+      </input>
+    </form>
+  </xsl:template>
+
+  <xsl:template name="next-records">
+    <xsl:for-each select="srw:nextRecordPosition">
+      <form name="nextlink" method="get">
+       <input type="hidden" name="version">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:version"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="operation" value="searchRetrieve"/>
+       <input type="hidden" name="query">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:query"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="recordPacking">
+         <xsl:attribute name="value">
+           <xsl:value-of select="srw:recordPacking"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="recordSchema">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:recordSchema"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="stylesheet">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:stylesheet"/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="startRecord">
+         <xsl:attribute name="value">
+           <xsl:value-of select="."/>
+         </xsl:attribute>
+       </input>
+       <input type="hidden" name="maximumRecords">
+         <xsl:attribute name="value">
+           <xsl:value-of
+               select="//srw:echoedSearchRetrieveRequest/srw:maximumRecords"/>
+         </xsl:attribute>
+       </input>
+       <input type="submit">
+         <xsl:attribute name="value">
+           <xsl:text>Next</xsl:text>
+         </xsl:attribute>
+       </input>
+      </form>
+    </xsl:for-each>
+  </xsl:template>
+
   <xsl:template name="displaysearch">
     <div class="searchresults">
       <xsl:for-each select="srw:numberOfRecords">
           <xsl:value-of select="."/>
         </h4>
       </xsl:for-each>
-      <xsl:for-each select="srw:nextRecordPosition">
-        <h4>
-          <xsl:text>Next Record Position: </xsl:text>
-          <xsl:value-of select="."/>
-         </h4>
-      </xsl:for-each>
+
+      <xsl:call-template name="searchform-refine"/>
+
+      <xsl:call-template name="next-records"/>
 
       <xsl:for-each select="srw:records">
         <xsl:for-each select="srw:record">
+         <hr/>
           <div class="record">
-            <p>
-              <xsl:text>Record: </xsl:text>
+            <h4>
+              <xsl:text>Record </xsl:text>
               <xsl:value-of select="srw:recordPosition"/>
-              <xsl:text> : </xsl:text>
-              <xsl:value-of select="srw:recordSchema"/>
-              <xsl:text> : </xsl:text>
-              <xsl:value-of select="srw:recordPacking"/>
-           </p>
-           <form name="fulllink" method="get">
-             <input type="hidden" name="version" value="1.2"/>
-             <input type="hidden" name="operation" value="searchRetrieve"/>
-             <input type="hidden" name="query">
-               <xsl:attribute name="value">
-                 <xsl:value-of
-                     select="//srw:echoedSearchRetrieveRequest/srw:query"/>
-               </xsl:attribute>
-             </input>
-             <input type="hidden" name="recordPacking">
-               <xsl:attribute name="value">
-                 <xsl:value-of select="srw:recordPacking"/>
-               </xsl:attribute>
-             </input>
-             <input type="hidden" name="recordSchema">
-               <xsl:attribute name="value">
-                 <xsl:value-of select="srw:recordSchema"/>
-               </xsl:attribute>
-             </input>
-             <input type="hidden" name="stylesheet" value="/xsl/briefDisplay.xsl"/>
-             <input type="hidden" name="startRecord">
-               <xsl:attribute name="value">
-                 <xsl:value-of select="srw:recordPosition"/>
-               </xsl:attribute>
-             </input>
-             <input type="hidden" name="maximumRecords" value="1"/>
-             <input type="submit">
-               <xsl:attribute name="value">
-                 <xsl:text>Full Record </xsl:text>
-                 <xsl:value-of select="srw:recordPosition"/>
-               </xsl:attribute>
-             </input>
-           </form>
+           </h4>
             <p>
-              <pre>
-                <xsl:value-of select="srw:recordData"/>
-              </pre>
-            </p>
-          </div>
+             <xsl:if test="srw:recordPacking='string'">
+               <pre>
+                 <xsl:value-of select="srw:recordData"/>
+               </pre>
+             </xsl:if>
+             <xsl:if test="srw:recordPacking='xml'">
+               <xsl:choose>
+                 <xsl:when test="srw:recordSchema='marcxml'">
+                   <xsl:text>MARCXML</xsl:text>
+                 </xsl:when>
+                 <xsl:when test="srw:recordSchema='bibframe'">
+                   <xsl:apply-templates select="srw:recordData"/>
+                 </xsl:when>
+               </xsl:choose>
+             </xsl:if>
+           </p>
+         </div>
+         <table>
+           <tr>
+             <td>
+             <form name="fulllink" method="get">
+               <input type="hidden" name="version">
+                 <xsl:attribute name="value">
+                   <xsl:value-of
+                       select="//srw:echoedSearchRetrieveRequest/srw:version"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="operation" value="searchRetrieve"/>
+               <input type="hidden" name="query">
+                 <xsl:attribute name="value">
+                   <xsl:value-of
+                       select="//srw:echoedSearchRetrieveRequest/srw:query"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="recordPacking">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordPacking"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="recordSchema">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordSchema"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="stylesheet" value="/fullDisplay.xsl"/>
+               <input type="hidden" name="startRecord">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordPosition"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="maximumRecords" value="1"/>
+               <input type="submit">
+                 <xsl:attribute name="value">
+                   <xsl:text>Full Record </xsl:text>
+                   <xsl:value-of select="srw:recordPosition"/>
+                 </xsl:attribute>
+               </input>
+             </form>
+             </td>
+             <td>
+             <form name="rawlink" method="get">
+               <input type="hidden" name="version">
+                 <xsl:attribute name="value">
+                   <xsl:value-of
+                       select="//srw:echoedSearchRetrieveRequest/srw:version"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="operation" value="searchRetrieve"/>
+               <input type="hidden" name="query">
+                 <xsl:attribute name="value">
+                   <xsl:value-of
+                       select="//srw:echoedSearchRetrieveRequest/srw:query"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="recordPacking">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordPacking"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="recordSchema">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordSchema"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="startRecord">
+                 <xsl:attribute name="value">
+                   <xsl:value-of select="srw:recordPosition"/>
+                 </xsl:attribute>
+               </input>
+               <input type="hidden" name="maximumRecords" value="1"/>
+               <input type="submit">
+                 <xsl:attribute name="value">
+                   <xsl:text>Raw Record </xsl:text>
+                   <xsl:value-of select="srw:recordPosition"/>
+                 </xsl:attribute>
+               </input>
+             </form>
+             </td>
+           </tr>
+         </table>
         </xsl:for-each>
       </xsl:for-each>
+
+      <xsl:call-template name="next-records"/>
+
     </div>
   </xsl:template>