|
|
- <?xml version="1.0" encoding="utf-8"?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:srw="http://www.loc.gov/zing/srw/" xmlns:zr="http://explain.z3950.org/dtd/2.0/" xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/" xmlns:refb="http://refbase.net/">
- <!-- Author: Rob Sanderson (azaroth@liv.ac.uk)
- Version: 0.6
- Last Updated: 27/11/2003
- Licence: GPL
- Modified by: Matthias Steffens (refbase@extracts.de) -->
- <xsl:output method="html" />
- <xsl:template match="/srw:explainResponse">
- <html>
- <head>
- <title>
- <xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title" />
- </title>
- <meta http-equiv="Content-Style-Type" content="text/css" />
- <link rel="stylesheet" href="css/style.css" type="text/css" title="CSS Definition" />
- <style type="text/css">
- /* H2 {font-family: sans-serif; color: #990000; background-color: #CCCCCC; padding-top: 10px; padding-bottom: 10px; border: 1px solid #CCCCCC }*/
- /* H3 {font-family: sans-serif; color: #990000; text-indent: 5px; border-left: solid 1px #CCCCCC; border-top: solid 1px #CCCCCC; padding-top: 5px }*/
- /* .paramTable { vertical-align: top; border: 1px solid; padding: 3px; border-collapse: collapse }*/
- /* .paramTable TD {border: 1px solid}*/
- /* TH {border: 1px solid; background-color: #eeeeff}*/
- </style>
- <script language="JavaScript" type="text/javascript">
- <xsl:text>
- function mungeForm() {
- inform = document.CQLForm;
- outform = document.SRUForm;
- max = inform.maxIndex.value;
- cql = "";
- prevIdx = 0;
- // Step through elements in form to create CQL
- for (var idx = 1; idx <= max; idx++) {
- term = inform["term"+idx].value;
- if (term) {
- if (prevIdx) {
- cql += " " + inform["bool" + prevIdx].value + " ";
- }
- if (term.indexOf(' ')) {
- term = '"' + term + '"';
- }
- cql += inform["index" + idx].value + " " + inform["relat" + idx].value + " " + term;
- prevIdx = idx;
- }
- }
- if (!cql) {
- alert("At least one term is required to search.");
- return false;
- }
- outform.query.value = cql;
- outform.submit();
- return false;
- }
-
- function mungeScanForm() {
- inform = document.ScanIndexes;
- outform = document.ScanSubmit;
- index = inform.scanIndex.value;
- term = inform.term.value;
- relat = inform.relat.value;
- outform.scanClause.value = index + " " + relat +" \"" + term + "\""
- outform.submit();
- return false;
- }
- </xsl:text>
- </script>
- </head>
- <body bgcolor="#FFFFFF">
- <!-- page header: -->
- <table class="pageheader" align="center" border="0" cellpadding="0" cellspacing="10" width="95%" summary="This holds the title logo and info">
- <tr>
- <td valign="bottom" rowspan="2" align="left" width="120">
- <a>
- <xsl:attribute name="href">
- <!-- note that the logo should point to the URL given in '$hostInstitutionURL' but this information is currently not available in the SRU explain response -->
- <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:links/zr:link[@type="www"]' />
- </xsl:attribute>
- <img src="img/logo.png" alt="" border="0" />
- </a>
- </td>
- <td>
- <h2><xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:title" /></h2>
- <span class="smallup">
- <a href="index.php" title="go to main page">Home</a><xsl:text> | </xsl:text>
- <a href="show.php?records=all" title="show all records in the database">Show All</a><xsl:text> | </xsl:text>
- <a href="simple_search.php" title="search the main fields of the database">Simple Search</a><xsl:text> | </xsl:text>
- <a href="advanced_search.php" title="search all fields of the database">Advanced Search</a>
- </span>
- </td>
- <td class="small" align="right" valign="middle"><br /></td>
- </tr>
- <tr>
- <td>Search the SRU web service:</td>
- <td class="small" align="right" valign="middle"><a href="user_login.php" title="login to the database">Login</a></td>
- </tr>
- </table>
- <hr class="pageheader" align="center" width="95%" />
- <!-- search forms: -->
- <xsl:apply-templates select="srw:diagnostics" />
- <table align="center" border="0" cellpadding="2" cellspacing="5" width="95%" summary="This table holds the search form">
- <tr>
- <td></td>
- <td>
- <form name="CQLForm" onsubmit="return mungeForm();">
- <table align="center" border="0" cellpadding="2" cellspacing="5" class="paramTable">
- <tr>
- <th>Index</th>
- <th>Relation</th>
- <th>Term</th>
- <th>Boolean</th>
- </tr>
- <input type="hidden" name="maxIndex">
- <xsl:attribute name="value">
- <xsl:value-of select="count(srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index)" />
- </xsl:attribute>
- </input>
- <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">
- <!-- <xsl:sort select="." /> -->
- <tr>
- <td align="right">
- <b><xsl:value-of select="zr:map[1]/zr:name/@set" />.<xsl:value-of select="zr:map[1]/zr:name" /></b>
- <input type="hidden">
- <xsl:attribute name="name">index<xsl:value-of select="position()" /></xsl:attribute>
- <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>
- </input>
- </td>
- <td>
- <select>
- <xsl:attribute name="name">relat<xsl:value-of select="position()" /></xsl:attribute>
- <option value="=">=</option>
- <option value="exact">exact</option>
- <option value="any">any</option>
- <option value="all">all</option>
- <option value="<"><</option>
- <option value=">">></option>
- <option value="<="><=</option>
- <option value=">=">>=</option>
- <option value="<>">not</option>
- </select>
- </td>
- <td>
- <input type="text" value="">
- <xsl:attribute name="name">term<xsl:value-of select="position()" /></xsl:attribute>
- <xsl:attribute name="title"><xsl:value-of select="zr:title" /> (refbase: <xsl:value-of select="substring-after(@refb:index,'-')" />)</xsl:attribute>
- </input>
- </td>
- <td>
- <select>
- <xsl:attribute name="name">bool<xsl:value-of select="position()" /></xsl:attribute>
- <option value="and">and</option>
- <option value="or">or</option>
- <option value="not">not</option>
- </select>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </form>
- <form method="GET" name="SRUForm" onsubmit="return mungeForm();">
- <input type="hidden" name="query" value="" />
- <input type="hidden" name="version" value="1.1" />
- <input type="hidden" name="operation" value="searchRetrieve" />
- <table align="center" border="0" cellpadding="2" cellspacing="5">
- <tr>
- <td>
- <b>Record Schema:</b>
- </td>
- <td>
- <select name="recordSchema">
- <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:schemaInfo/zr:schema">
- <option>
- <xsl:attribute name="value">
- <xsl:value-of select="@identifier" />
- </xsl:attribute>
- <xsl:value-of select="zr:title" />
- </option>
- </xsl:for-each>
- </select>
- </td>
- </tr>
- <tr>
- <td>
- <b>Record Packing:</b>
- </td>
- <td>
- <select name="recordPacking">
- <xsl:choose>
- <xsl:when test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:setting[@type="recordPacking"]'>
- <option>
- <xsl:attribute name="value">
- <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:setting[@type="recordPacking"]' />
- </xsl:attribute>
- <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:setting[@type="recordPacking"]' />
- </option>
- </xsl:when>
- <xsl:otherwise>
- <option value="xml">xml</option>
- <option value="string">string</option>
- </xsl:otherwise>
- </xsl:choose>
- </select>
- </td>
- </tr>
- <tr>
- <td>
- <b>Number of Records:</b>
- </td>
- <td>
- <input type="text" name="maximumRecords">
- <xsl:attribute name="value">
- <xsl:choose>
- <xsl:when test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]'>
- <xsl:value-of select='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:default[@type="numberOfRecords"]' />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>1</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </input>
- </td>
- </tr>
- <tr>
- <td>
- <b>Record Position:</b>
- </td>
- <td>
- <input type="text" name="startRecord" value="1" />
- </td>
- </tr>
- <xsl:if test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:supports[@type="resultSets"] != "false"'>
- <tr>
- <td>
- <b>Result Set TTL:</b>
- </td>
- <td>
- <input type="text" name="resultSetTTL" value="0" />
- </td>
- </tr>
- </xsl:if>
- <xsl:if test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:supports[@type="recordXPath"] != "false"'>
- <tr>
- <td>
- <b>Record XPath:</b>
- </td>
- <td>
- <input type="text" name="recordXPath" value="" />
- </td>
- </tr>
- </xsl:if>
- <xsl:if test='srw:record/srw:recordData/zr:explain/zr:configInfo/zr:supports[@type="sort"] != "false"'>
- <tr>
- <td>
- <b>Sort Keys:</b>
- </td>
- <td>
- <input type="text" name="sortKeys" value="" />
- </td>
- </tr>
- </xsl:if>
- <tr>
- <td colspan="2" align="right">
- <input type="submit" value="Search" onclick="return mungeForm();" />
- </td>
- </tr>
- </table>
- </form>
- </td>
- <!--
- <td valign="top">
- <h3>Browse</h3>
- <!~~ Some browsers won't display when forms inside tables :( ~~>
- <form name="ScanIndexes" onsubmit="return mungeScanForm();">
- <table>
- <tr>
- <th>Index</th>
- <th>Relation</th>
- <th>Term</th>
- <th>Boolean</th>
- </tr>
- <tr>
- <td>
- <select name="scanIndex">
- <xsl:for-each select="srw:record/srw:recordData/zr:explain/zr:indexInfo/zr:index">
- <xsl:sort select="." />
- <option>
- <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>
- <xsl:value-of select="zr:title" />
- </option>
- </xsl:for-each>
- </select>
- </td>
- <td>
- <select name="relat">
- <option value="=">=</option>
- <option value="exact">exact</option>
- <option value="any">any</option>
- <option value="all">all</option>
- <option value="<"><</option>
- <option value=">">></option>
- <option value="<="><=</option>
- <option value=">=">>=</option>
- <option value="<>">not</option>
- </select>
- </td>
- <td>
- <input name="term" type="text" value="" />
- </td>
- </tr>
- </table>
- </form>
- <form name="ScanSubmit" method="GET">
- <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" /></xsl:attribute>
- <table>
- <tr>
- <td>
- <b>Response Position:</b>
- </td>
- <td>
- <input type="text" name="responsePosition" value="1" size="5" />
- </td>
- </tr>
- <tr>
- <td>
- <b>Maximum Terms:</b>
- </td>
- <td>
- <input type="text" name="maximumTerms" value="20" size="5" />
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <input type="submit" value="Browse" onclick="return mungeScanForm();" />
- </td>
- </tr>
- </table>
- <input type="hidden" name="operation" value="scan" />
- <input type="hidden" name="scanClause" value="" />
- <input type="hidden" name="version" value="1.1" />
- </form>
- </td>
- -->
- </tr>
- <tr>
- <td valign="top">
- <b>Help:</b>
- </td>
- <td valign="top">
- <xsl:text>This form gets dynamically created from the </xsl:text><a href="http://www.loc.gov/standards/sru/" target="top">SRU</a><xsl:text> explain response, it exposes indexes and capabilities offered by the refbase SRU server.</xsl:text>
- <xsl:text> Queries must be specified as </xsl:text><a href="http://www.loc.gov/standards/sru/specs/cql.html" target="top">CQL (Common Query Language)</a><xsl:text>, an introduction to CQL is given </xsl:text><a href="http://zing.z3950.org/cql/intro.html" target="top">here</a><xsl:text>.</xsl:text>
- <xsl:text> Please see the </xsl:text><a href="http://sru.refbase.net/" target="top">refbase online documentation</a>
- <xsl:text> for more information about the SRU web service.</xsl:text>
- </td>
- </tr>
- </table>
- <!-- page footer: -->
- <hr class="pagefooter" align="center" width="95%" />
- <table class="pagefooter" align="center" border="0" cellpadding="0" cellspacing="10" width="95%" summary="This table holds the footer">
- <tr>
- <td class="small" width="105"><a href="index.php" title="go to main page">Home</a></td>
- <td class="small" align="center">
- <a href="sru.php" title="search the SRU web service">SRU Search</a><xsl:text> | </xsl:text>
- <a href="library_search.php">
- <xsl:attribute name="title">
- <xsl:text>search the library of the </xsl:text><xsl:value-of select="srw:record/srw:recordData/zr:explain/zr:databaseInfo/zr:author" />
- </xsl:attribute>
- <xsl:text>Library Search</xsl:text>
- </a><xsl:text> | </xsl:text>
- <a href="show.php" title="display details for a particular record by entering its database serial number">Show Record</a><xsl:text> | </xsl:text>
- <a href="extract.php" title="extract citations from a text and build an appropriate reference list">Extract Citations</a>
- </td>
- <td class="small" align="right" width="105"><a href="http://wiki.refbase.net/" title="display help">Help</a></td>
- </tr>
- </table>
- </body>
- </html>
- </xsl:template>
- <xsl:template match="srw:diagnostics">
- <h3>Diagnostics</h3>
- <xsl:apply-templates />
- </xsl:template>
- <xsl:template match="diag:diagnostic">
- <table>
- <xsl:apply-templates />
- </table>
- </xsl:template>
- <xsl:template match="diag:code">
- <tr>
- <td>
- <b>Code:</b>
- </td>
- <td>
- <xsl:value-of select="." />
- </td>
- </tr>
- </xsl:template>
- <xsl:template match="diag:message">
- <tr>
- <td>
- <b>Message:</b>
- </td>
- <td>
- <xsl:value-of select="." />
- </td>
- </tr>
- </xsl:template>
- <xsl:template match="diag:details">
- <tr>
- <td>
- <b>Details:</b>
- </td>
- <td>
- <xsl:value-of select="." />
- </td>
- </tr>
- </xsl:template>
- </xsl:stylesheet>
|