New from Hedzer Westra <hedzer@NL.ADLIBSOFT.COM>
[cql-java-moved-to-github.git] / etc / xslt / explainResponse.xsl
diff --git a/etc/xslt/explainResponse.xsl b/etc/xslt/explainResponse.xsl
new file mode 100644 (file)
index 0000000..865902a
--- /dev/null
@@ -0,0 +1,334 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<xsl:stylesheet version="1.0"\r
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+    xmlns:srw="http://www.loc.gov/zing/srw/"\r
+    xmlns:zr="http://explain.z3950.org/dtd/2.0/"\r
+    xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/">\r
+\r
+  <!--      Author: Rob Sanderson (azaroth@liv.ac.uk)\r
+           Version:  0.6\r
+      Last Updated:  27/11/2003\r
+           Licence:  GPL \r
+    \r
+    Updated by Hedzer Westra (Adlib Information Systems) on 07-12-2004\r
+    \r
+    -->\r
+\r
+  <xsl:output method="html"/>\r
+\r
+  <xsl:template match="/srw:explainResponse">\r
+    <html>\r
+      <head>\r
+        <title>\r
+          <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title"/>\r
+          </title>\r
+        <style>\r
+          H2 {font-family: sans-serif; color: #FF5500; background-color: #eeeeff; padding-top: 10px; padding-bottom: 10px; border: 1px solid #3333FF}\r
+          H3 { font-family: sans-serif; color: #F65500; text-indent: 20px; border-left: solid 1px #3333FF; border-top: solid 1px #3333FF; padding-top: 5px }\r
+          .paramTable { vertical-align: top; border: 1px solid; padding: 3px; border-collapse: collapse }\r
+          .exampleTable { vertical-align: top; border: 1px solid; padding: 3px; border-collapse: collapse; background-color: #eeeeff}\r
+          \r
+          .paramTable TD {border: 1px solid}\r
+          .exampleTable TD {border: 1px solid}\r
+          TH {border: 1px solid; background-color: #eeeeff}\r
+\r
+        </style>\r
+\r
+        <script>\r
+          <xsl:text>\r
+            function mungeForm() {\r
+            inform = document.CQLForm;\r
+            outform = document.SRUForm;\r
+            max = inform.maxIndex.value;\r
+            cql = "";\r
+            prevIdx = 0;\r
+            // Step through elements in form to create CQL\r
+            for (var idx = 1; idx &lt;= max; idx++) {\r
+              term = inform["term"+idx].value;\r
+              if (term) {\r
+                if (prevIdx) {\r
+                  cql += " " + inform["bool" + prevIdx].value + " "\r
+                }\r
+                if (term.indexOf(' ')) {\r
+                  term = '"' + term + '"';\r
+                }\r
+                cql += inform["index" + idx].value + " " + inform["relat" + idx].value + " " + term\r
+                prevIdx = idx\r
+             }\r
+            }\r
+            if (!cql) {\r
+            alert("At least one term is required to search.");\r
+            return false;\r
+            }\r
+            outform.query.value = cql\r
+            outform.submit();\r
+            return false;\r
+            }\r
+\r
+            function mungeScanForm() {\r
+            inform = document.ScanIndexes;\r
+            outform = document.ScanSubmit;\r
+            index = inform.scanIndex.value;\r
+            term = inform.term.value;\r
+            relat = inform.relat.value;\r
+            outform.scanClause.value = index + " " + relat +" \"" + term + "\""\r
+            outform.submit();\r
+            return false;\r
+            }\r
+\r
+          </xsl:text>\r
+        </script>\r
+      </head>\r
+      <body bgcolor="#FFFFFF">\r
+        <center>\r
+          <h2>\r
+            <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title"/>\r
+          <br/>\r
+            <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:implementation/zr:title"/>\r
+          </h2>\r
+        </center>\r
+\r
+        <p>\r
+          <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:description"/>\r
+        </p>\r
+\r
+       <xsl:apply-templates select="srw:diagnostics"/>\r
+\r
+<table width="100%" cellspacing="5">\r
+<tr><td>\r
+\r
+        <h3>Search</h3>\r
+\r
+        <p>\r
+        <form name="CQLForm" onSubmit="return mungeForm();">\r
+          <input type="submit" value="Search" onClick="return mungeForm();"/>\r
+        <table class="paramTable">\r
+          <tr><th>Index</th><th>Relation</th><th>Term</th><th>Boolean</th></tr>\r
+          <input type="hidden" name="maxIndex">\r
+            <xsl:attribute name="value">\r
+              <xsl:value-of select="count(srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index)"/>\r
+            </xsl:attribute>\r
+          </input>\r
+          <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">\r
+            <xsl:sort select="."/>\r
+            <tr>\r
+              <td align="right">\r
+                <b><xsl:value-of select="zr:title"/></b>\r
+                <input type="hidden">\r
+                  <xsl:attribute name="name">index<xsl:value-of select="position()"/></xsl:attribute>\r
+                  <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
+                </input>\r
+              </td>\r
+              <td>\r
+                <select>\r
+                  <xsl:attribute name="name">relat<xsl:value-of select="position()"/></xsl:attribute>\r
+                  <option value="=">=</option>\r
+                  <option value="exact">exact</option>\r
+                  <option value="any">any</option>\r
+                  <option value="all">all</option>\r
+                  <option value="&lt;">&lt;</option>\r
+                  <option value="&gt;">&gt;</option>\r
+                  <option value="&lt;=">&lt;=</option>\r
+                  <option value="&gt;=">&gt;=</option>\r
+                  <option value="&lt;&gt;">not</option>\r
+                  <option value="broader">broader</option>\r
+                  <option value="narrower">narrower</option>\r
+                  <option value="generic">generic</option>\r
+                  <option value="realted">related</option>\r
+                  <option value="topterm">topterm</option>\r
+                  <option value="parents">parents</option>\r
+                </select>\r
+              </td>\r
+              <td>\r
+                <input type="text" value="">\r
+                  <xsl:attribute name="name">term<xsl:value-of select="position()"/></xsl:attribute>\r
+                </input>\r
+              </td>\r
+              <td>\r
+                <select>\r
+                  <xsl:attribute name="name">bool<xsl:value-of select="position()"/></xsl:attribute>\r
+                  <option value="and">and</option>\r
+                  <option value="or">or</option>\r
+                  <option value="not">not</option>\r
+                </select>\r
+              </td>\r
+            </tr>\r
+          </xsl:for-each>\r
+        </table>\r
+      </form>\r
+\r
+        <form method="GET" name="SRUForm" onSubmit="mungeForm()">\r
+        \r
+        <input type="hidden" name="query" value=""/>\r
+        <input type="hidden" name="version" value="1.1"/>\r
+        <input type="hidden" name="operation" value="searchRetrieve"/>\r
+        <input type="hidden" name="stylesheet" value="searchRetrieveResponse.xsl"/>\r
+        \r
+        <table>\r
+          <tr>\r
+            <td><b>Record Schema:</b>\r
+          </td>\r
+          <td>\r
+            <select name="recordSchema">\r
+              <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:schemaInfo/zr:schema">\r
+                <option>\r
+                  <xsl:attribute name="value">\r
+                    <xsl:value-of select="@identifier"/>\r
+                  </xsl:attribute>\r
+                  <xsl:value-of select="zr:title"/>\r
+                </option>\r
+              </xsl:for-each>\r
+            </select>\r
+          </td>\r
+        </tr>\r
+        <tr>\r
+          <td><b>Number of Records:</b></td>\r
+          <td>\r
+            <input type="text" name="maximumRecords">\r
+              <xsl:attribute name="value">\r
+              <xsl:choose>\r
+                <xsl:when test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]'>\r
+                  <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]'/>\r
+                  </xsl:when>\r
+                <xsl:otherwise>\r
+                  <xsl:text>1</xsl:text>\r
+                  </xsl:otherwise>\r
+                </xsl:choose>\r
+              </xsl:attribute>\r
+            </input>\r
+          </td>\r
+        </tr>\r
+\r
+        <tr>\r
+          <td><b>Record Position:</b></td>\r
+          <td>\r
+            <input type="text" name="startRecord" value="1"/>\r
+          </td>\r
+        </tr>\r
+        <tr>\r
+          <td><b>Result Set TTL:</b></td>\r
+          <td>\r
+            <input type="text" name="resultSetTTL" value="0"/>\r
+          </td>\r
+        </tr>\r
+\r
+        <tr>\r
+          <td><b>Record Packing:</b></td>\r
+          <td>\r
+            <select name="recordPacking">\r
+              <option value="xml">XML</option>\r
+              <option value="string">String</option>\r
+            </select>\r
+          </td>\r
+        </tr>\r
+\r
+       <tr>\r
+       <td><b>Record XPath:</b></td>\r
+       <td><input type="text" name="recordXPath" value = ""/></td>\r
+       </tr>   \r
+       <tr>\r
+\r
+       <td><b>Sort Keys:</b></td>\r
+       <td><input type="text" name="sortKeys" value = ""/></td>\r
+       </tr>   \r
+\r
+      </table>\r
+\r
+          <input type="submit" value="Search" onClick="return mungeForm();"/>\r
+        </form>\r
+      </p>\r
+\r
+</td><td valign="top">\r
+\r
+  <h3>Browse</h3>\r
+     <!-- Some browsers won't display when forms inside tables :( -->\r
+\r
+     <form name="ScanIndexes" onSubmit="return mungeScanForm();">\r
+   <table>\r
+          <tr><th>Index</th><th>Relation</th><th>Term</th><th>Boolean</th></tr>\r
+     <tr>\r
+       <td><select name="scanIndex">\r
+         <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">\r
+           <xsl:sort select="."/>\r
+           <option>\r
+             <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
+                <xsl:value-of select="zr:title"/>\r
+            </option>\r
+         </xsl:for-each>\r
+         </select>\r
+      </td>\r
+      <td><select name="relat">\r
+          <option value="=">=</option>\r
+          <option value="exact">exact</option>\r
+          <option value="any">any</option>\r
+          <option value="all">all</option>\r
+          <option value="&lt;">&lt;</option>\r
+          <option value="&gt;">&gt;</option>\r
+          <option value="&lt;=">&lt;=</option>\r
+          <option value="&gt;=">&gt;=</option>\r
+          <option value="&lt;&gt;">not</option>\r
+        </select>\r
+      </td>\r
+      <td><input name="term" type="text" value = ""/>\r
+      </td>\r
+    </tr>\r
+    </table>\r
+    </form>\r
+\r
+    <form name="ScanSubmit" method="GET">\r
+          <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
+        </xsl:attribute>\r
+    <table>\r
+    <tr>\r
+      <td>Response Position:</td>\r
+      <td>\r
+        <input type="text" name="responsePosition" value="1" size="5"/>\r
+      </td>\r
+    </tr>\r
+    <tr>\r
+      <td>Maximum Terms:</td>\r
+      <td>\r
+        <input type="text" name="maximumTerms" value="20" size="5"/>\r
+      </td>\r
+    </tr>\r
+    <tr>\r
+      <td colspan="2">\r
+         <input type="submit" value="Browse" onClick="return mungeScanForm();"/>\r
+      </td>\r
+    </tr>\r
+    </table>\r
+    <input type="hidden" name="operation" value="scan"/>\r
+    <input type="hidden" name="scanClause" value=""/>\r
+    <input type="hidden" name="version" value="1.1"/>\r
+    <input type="hidden" name="stylesheet" value="scanResponse.xsl"/>\r
+    </form>\r
+\r
+</td></tr>\r
+</table>            \r
+\r
+\r
+      </body>\r
+    </html>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="srw:diagnostics">\r
+     <h3>Diagnostics</h3>\r
+     <xsl:apply-templates/>\r
+  </xsl:template>\r
+\r
+<xsl:template match="diag:diagnostic">\r
+<table>\r
+<xsl:apply-templates/>\r
+</table>\r
+</xsl:template>\r
+<xsl:template match="diag:code">\r
+<tr><td><b>Code:</b></td><td> <xsl:value-of select="."/></td></tr>\r
+</xsl:template>\r
+<xsl:template match="diag:message">\r
+<tr><td><b>Message:</b></td><td><xsl:value-of select="."/></td></tr>\r
+</xsl:template>\r
+<xsl:template match="diag:details">\r
+<tr><td><b>Details:</b></td><td><xsl:value-of select="."/></td></tr>\r
+</xsl:template>\r
+\r
+</xsl:stylesheet>\r