--- /dev/null
+<?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 <= 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="<"><</option>\r
+ <option value=">">></option>\r
+ <option value="<="><=</option>\r
+ <option value=">=">>=</option>\r
+ <option value="<>">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="<"><</option>\r
+ <option value=">">></option>\r
+ <option value="<="><=</option>\r
+ <option value=">=">>=</option>\r
+ <option value="<>">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