Changeset 14394

Show
Ignore:
Timestamp:
31.08.2007 11:33:33 (12 years ago)
Author:
anna
Message:

Moved options on the search pages into the preference page. Only display search modes and options that are supported by the collection.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • greenstone3/trunk/web/interfaces/classic/transform/pref.xsl

    r14382 r14394  
    66  extension-element-prefixes="java util" 
    77  exclude-result-prefixes="java util"> 
    8  
     8   
    99  <xsl:include href="style.xsl"/> 
    10   <!--<xsl:include href="pref-text.xsl"/>--> 
    11    
    1210  <xsl:output method="html"/>   
    1311   
     
    1715 
    1816  <!-- page specific style goes here --> 
    19   <xsl:template name="pageStyle"/> 
    20  
     17  <xsl:template name="pageStyle"> 
     18    <script type="text/javascript" src="interfaces/classic/js/pref.js"><xsl:text disable-output-escaping="yes"> </xsl:text></script> 
     19    <link rel="stylesheet" href="interfaces/classic/style/classic.css" type="text/css"/> 
     20  </xsl:template> 
    2121 
    2222  <xsl:template match="pageResponse"> 
    2323    <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/> 
     24    <!-- check whether these search modes are supported -->     
     25    <xsl:variable name="simplestatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable> 
     26    <xsl:variable name="formstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='FieldQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable> 
     27    <xsl:variable name="advancedstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='AdvancedFieldQuery']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable> 
     28     
    2429    <center> 
    2530      <xsl:call-template name="standardPageBanner"> 
     
    3035    <xsl:with-param name="collName" select="$collName"/> 
    3136      </xsl:call-template> 
    32       <form name="PrefForm" method="get" action="{$library_name}"> 
     37      <form name="PrefForm" method="get" action="{$library_name}" onsubmit="return checkForm();">         
    3338    <input type='hidden' name='a' value='p'/> 
    3439    <input type='hidden' name='sa' value='pref'/> 
    35         <!-- added parameter --> 
    3640        <input type='hidden' name='c' value="{$collName}"/> 
    37     <table> 
    38       <tr><td><h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></h3></td></tr> 
     41         
     42    <table width="800"> 
     43          <tr><td><div class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.prespref')"/></div></td></tr> 
    3944          <tr><td><xsl:call-template name="pres-prefs"/></td></tr> 
    40       <tr><td><xsl:call-template name="dividerBar"/></td></tr> 
    41       <tr><td><h3><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></h3></td></tr> 
    42           <tr><td><xsl:call-template name="search-prefs"/></td></tr> 
    43       <tr><td><xsl:call-template name="dividerBar"/></td></tr> 
     45      <tr><td><div class="formheading"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.searchpref')"/></div></td></tr> 
     46          <tr><td><xsl:call-template name="search-mode-prefs"><xsl:with-param name="simplestatus" select="$simplestatus"/><xsl:with-param name="formstatus" select="$formstatus"/><xsl:with-param name="advancedstatus" select="$advancedstatus"/></xsl:call-template></td></tr> 
    4447    </table> 
    4548      </form> 
     
    5053  <xsl:template name="pres-prefs"> 
    5154    <table> 
    52       <tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/></td><td align='left'>English</td></tr> 
    53       <tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></td><td align='left'>UTF-8</td></tr> 
     55      <tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.interfacelang')"/></td><td align='left'><xsl:call-template name="lang-list"/><!--English--></td></tr>       
     56      <!--<tr><td><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref.encoding')"/></td><td align='left'>UTF-8</td></tr> --> 
    5457    </table> 
    5558  </xsl:template> 
    5659   
    57   <xsl:template name="search-prefs"> 
    58     <xsl:param name="ns">s1.</xsl:param> 
     60  <xsl:template name="lang-list"> 
     61    <xsl:variable name="current" select="/page/@lang"/> 
     62    <select name="l"> 
     63      <xsl:for-each select="/page/pageResponse/languageList/language">         
     64    <option value="{@name}"><xsl:if test="@name=$current"><xsl:attribute name="selected"></xsl:attribute></xsl:if><xsl:if test="displayItem"><xsl:value-of select="displayItem[@name='name']"/></xsl:if><xsl:if test="not(displayItem)"><xsl:value-of select="@displayname"/></xsl:if></option> 
     65      </xsl:for-each> 
     66    </select> 
     67  </xsl:template> 
     68   
     69  <xsl:template name="search-mode-prefs"> 
     70    <xsl:param name="ns">s1.</xsl:param> 
     71    <xsl:param name="simplestatus"/> 
     72    <xsl:param name="formstatus"/> 
     73    <xsl:param name="advancedstatus"/> 
     74     
     75    <!-- search type : 0(default, simple); 1(form) --> 
    5976    <xsl:variable name="ct"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='ct']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='ct']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
     77    <xsl:variable name="qt"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qt']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qt']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
     78    <!-- search form type : 0(default, simple form); 1(advanced form) --> 
     79    <xsl:variable name="queryfmode"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfm']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfm']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
     80    <!-- search mode: text, form, advanced --> 
     81    <xsl:variable name="mode"><xsl:choose><xsl:when test="$ct=0">text</xsl:when><xsl:when test="$queryfmode=0">form</xsl:when><xsl:when test="$queryfmode=1">advanced</xsl:when><xsl:otherwise>text</xsl:otherwise></xsl:choose></xsl:variable> 
     82             
    6083    <table> 
    61       <tr><td> </td><td> </td><td align='right'><input type='submit' value='set prefs'/></td></tr> 
    62       <xsl:choose> 
    63     <xsl:when test="$ct=0"> 
    64       <xsl:call-template name='text-search-prefs'/> 
    65     </xsl:when> 
    66     <xsl:otherwise> 
    67       <!-- search type --> 
    68       <xsl:variable name='querytype'><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qt']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qt']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
    69       <tr><td  rowspan='2' valign='baseline'>Type of search:</td><td><input type='radio' name='qt' value='0'><xsl:if test="$querytype=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td align='left'> text search</td></tr> 
    70       <tr><td></td><td> 
    71           <table> 
    72         <xsl:call-template name='text-search-prefs'/> 
    73           </table></td></tr> 
    74        
    75       <tr><td> </td><td><input type='radio' name='qt' value='1'><xsl:if test="$querytype=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> form search<br /></td></tr> 
    76       <tr><td></td><td></td><td> 
    77           <table> 
    78         <!-- query form mode --> 
    79         <xsl:variable name="queryfmode"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfm']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfm']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
    80         <tr><td valign='baseline'>Form type:</td><td><input type='radio' name='qfm' value='0'><xsl:if test="$queryfmode=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input> simple <br /> 
    81             <input type='radio' name='qfm' value='1'><xsl:if test="$queryfmode=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input> advanced</td></tr> 
    82         <!-- query form num boxes --> 
    83         <xsl:variable name="numbox"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfn']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfn']/@value"/></xsl:when><xsl:otherwise>4</xsl:otherwise></xsl:choose></xsl:variable> 
    84         <tr><td colspan='2'>with <select name="qfn"> 
    85               <option value="2"><xsl:if test="$numbox=2"><xsl:attribute name="selected"></xsl:attribute></xsl:if>2</option>  
    86               <option value="4"><xsl:if test="$numbox=4"><xsl:attribute name="selected"></xsl:attribute></xsl:if>4</option> 
    87               <option value="6"><xsl:if test="$numbox=6"><xsl:attribute name="selected"></xsl:attribute></xsl:if>6</option> 
    88               <option value="8"><xsl:if test="$numbox=8"><xsl:attribute name="selected"></xsl:attribute></xsl:if>8</option> 
    89             </select> fields</td></tr> 
    90           </table></td></tr> 
    91     </xsl:otherwise> 
    92       </xsl:choose> 
    93       <!-- case folding --> 
    94       <xsl:variable name="casevar" select="concat($ns,'case')"/> 
    95       <xsl:variable name="case"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$casevar]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$casevar]/@value"/></xsl:when><xsl:otherwise>1</xsl:otherwise></xsl:choose></xsl:variable> 
    96       <tr><td rowspan='2' valign='baseline'>Case differences:</td><td><input type='radio' name='{$ns}case' value='1'><xsl:if test="$case=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> ignore case differences</td></tr> 
    97       <tr><td><input type='radio' name='{$ns}case' value='0'><xsl:if test="$case=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> upper/lower case must match</td></tr> 
    98       <!-- stemming --> 
    99       <xsl:variable name="stemvar" select="concat($ns,'stem')"/> 
    100       <xsl:variable name="stem"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$stemvar]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$stemvar]/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
    101       <tr><td  rowspan='2' valign='baseline'>Word endings:</td><td><input type='radio' name='{$ns}stem' value='1'><xsl:if test="$stem=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> ignore word endings</td></tr> 
    102       <tr><td><input type='radio' name='{$ns}stem' value='0'><xsl:if test="$stem=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> whole word must match</td></tr> 
    103       <!-- hit display --> 
     84      <tr><td> </td><td> </td><td align='right'><input type='submit' name="submit" value='set prefs'/></td></tr> 
     85      <!-- search type -->        
     86      <!-- values are updated by either xslt or javascript --> 
     87      <input type="hidden" name="ct" value="{$ct}"/> 
     88      <input type="hidden" name="qt" value="{$qt}"/> 
     89       
     90      <tr><td valign='baseline' class='col1'>Type of search </td><td class='col2'><input type='radio' name='qfm' value='2' onclick="javascript:changePref(2)"><xsl:if test="$ct=0 or $queryfmode=2"><xsl:attribute name="checked"/></xsl:if></input></td><td class='col3'> <font><xsl:if test="$ct=0 or $queryfmode=2"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if>simple text</font>  
     91       
     92      <xsl:if test="$formstatus='y'"><input name="qfm" onclick="javascript:changePref(0)" type="radio" value="0"><xsl:if test="$mode='form'"><xsl:attribute name="checked"/></xsl:if></input> <font><xsl:if test="$mode='form'"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if>simple form</font></xsl:if> 
     93        
     94      <xsl:if test="$advancedstatus='y'"><input name="qfm" onclick="javascript:changePref(1)" type="radio" value="1" ><xsl:if test="$mode='advanced'"><xsl:attribute name="checked"/></xsl:if></input> <font><xsl:if test="$mode='advanced'"><xsl:attribute name="style">font-weight: bold;</xsl:attribute></xsl:if>advanced form</font></xsl:if> 
     95      </td></tr> 
     96       
     97      <!-- search options --> 
     98      <tr><td><div class="formheading">Options</div></td></tr> 
     99      <xsl:call-template name="search-options-prefs"><xsl:with-param name="mode" select="$mode"/><xsl:with-param name="simplestatus" select="$simplestatus"/><xsl:with-param name="formstatus" select="$formstatus"/><xsl:with-param name="advancedstatus" select="$advancedstatus"/></xsl:call-template> 
     100    </table> 
     101  </xsl:template> 
     102   
     103  <xsl:template name="search-options-prefs"> 
     104    <xsl:param name="ns">s1.</xsl:param> 
     105    <xsl:param name="mode">text</xsl:param> 
     106    <xsl:param name="simplestatus"/> 
     107    <xsl:param name="formstatus"/> 
     108    <xsl:param name="advancedstatus"/> 
     109     
     110    <!-- extract service parameters, avoid hard coding params in this xslt -->  
     111    <!-- mode specific options --> 
     112    <xsl:call-template name="text-search-prefs"><xsl:with-param name="display"><xsl:if test="$mode='text'">y</xsl:if><xsl:if test="$mode='advanced' or $mode='form'">n</xsl:if></xsl:with-param></xsl:call-template> 
     113    <!-- simple form search mode doesn't have any specific options --> 
     114    <!-- <xsl:if test="$mode='form'"><xsl:apply-templates select="/page/pageResponse//service[@name='FieldQuery']"/></xsl:if> -->     
     115    <xsl:call-template name="advanced-search-prefs"><xsl:with-param name="display"><xsl:if test="$mode='advanced'">y</xsl:if><xsl:if test="$mode='text' or $mode='form'">n</xsl:if></xsl:with-param></xsl:call-template> 
     116       
     117    <!-- search type specific options --> 
     118    <xsl:apply-templates select="/page/pageResponse//service[@name='TextQuery']"> 
     119      <xsl:with-param name="display"><xsl:if test="$mode='text' or $mode='form'">y</xsl:if><xsl:if test="$mode='advanced'">n</xsl:if></xsl:with-param> 
     120      <xsl:with-param name="prefix">tf</xsl:with-param> 
     121    </xsl:apply-templates> 
     122    <xsl:apply-templates select="/page/pageResponse//service[@name='AdvancedFieldQuery']"> 
     123      <xsl:with-param name="display"><xsl:if test="$mode='advanced'">y</xsl:if><xsl:if test="$mode='text' or $mode='form'">n</xsl:if></xsl:with-param> 
     124      <xsl:with-param name="prefix">adv</xsl:with-param> 
     125    </xsl:apply-templates> 
     126     
     127    <!-- General options --> 
     128    <!-- sort order --> 
     129    <xsl:variable name="sort"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']//param[@name='sortBy']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable> 
     130    <xsl:if test="$sort='y'">  
     131      <xsl:variable name="sortvar" select="concat($ns,'sortBy')"/>     
     132      <xsl:variable name="sortparam" select="//param[@name='sortBy']"/> 
     133      <xsl:variable name="cachedValue" select="/page/pageRequest/paramList/param[@name=$sortvar]/@value"/>       
     134      <xsl:variable name="defaultValue" select="$sortparam/@default"/>             
     135      <xsl:variable name="optionVal" select="$sortparam/option[1]/@name"/>       
     136       
     137      <tr><td rowspan='2' valign='baseline'><xsl:value-of select="$sortparam/displayItem"/></td><td><input type='radio' name='{$sortvar}' value='{$optionVal}'><xsl:choose><xsl:when test="$cachedValue=$optionVal"><xsl:attribute name="checked"/></xsl:when><xsl:when test="normalize-space($cachedValue)='' and $optionVal=$defaultValue"><xsl:attribute name="checked"/></xsl:when></xsl:choose></input></td> 
     138      <td><xsl:value-of select="$sortparam/option[1]/displayItem"/></td></tr> 
     139       
     140      <xsl:variable name="optionVal" select="$sortparam/option[2]/@name"/> 
     141      <tr><td><input type='radio' name='{$sortvar}' value='{$optionVal}'><xsl:choose><xsl:when test="$cachedValue=$optionVal"><xsl:attribute name="checked"/></xsl:when><xsl:when test="normalize-space($cachedValue)='' and $optionVal=$defaultValue"><xsl:attribute name="checked"/></xsl:when></xsl:choose></input></td><td><xsl:value-of select="$sortparam/option[2]/displayItem"/></td></tr> 
     142    </xsl:if> 
     143     
     144    <!-- hit display --> 
     145    <!-- normally all the collections support customized number of returned records and displayed records. Just to be consistent with the other two options. --> 
     146    <xsl:variable name="maxstatus"><xsl:choose><xsl:when test="/page/pageResponse//service[@name='TextQuery']//param[@name='maxDocs']">y</xsl:when><xsl:otherwise>n</xsl:otherwise></xsl:choose></xsl:variable> 
     147    <xsl:if test="$maxstatus='y'">       
    104148      <xsl:variable name="maxvar" select="concat($ns,'maxDocs')"/> 
    105149      <xsl:variable name="maxdocs"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$maxvar]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$maxvar]/@value"/></xsl:when><xsl:otherwise>50</xsl:otherwise></xsl:choose></xsl:variable> 
    106150      <xsl:variable name="hits"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='hitsPerPage']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='hitsPerPage']/@value"/></xsl:when><xsl:otherwise>20</xsl:otherwise></xsl:choose></xsl:variable> 
    107151      <tr><td colspan='3'>Return up to  
    108       <select name="{$ns}maxDocs"> 
    109         <option value="50"><xsl:if test="$maxdocs=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option> 
    110         <option value="100"><xsl:if test="$maxdocs=100"><xsl:attribute name="selected"></xsl:attribute></xsl:if>100</option> 
    111         <option value="200"><xsl:if test="$maxdocs=200"><xsl:attribute name="selected"></xsl:attribute></xsl:if>200</option> 
    112         <option value="-1"><xsl:if test="$maxdocs=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if>all</option> 
    113       </select> 
    114       hits with  
    115       <select name="hitsPerPage"> 
    116         <option value="10"><xsl:if test="$hits=10"><xsl:attribute name="selected"></xsl:attribute></xsl:if>10 </option>  
    117         <option value="20"><xsl:if test="$hits=20"><xsl:attribute name="selected"></xsl:attribute></xsl:if>20</option> 
    118         <option value="50"><xsl:if test="$hits=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option> 
    119         <option value="-1"><xsl:if test="$hits=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if>all</option> 
    120       </select> 
    121       hits per page. 
    122     </td></tr> 
    123     </table> 
     152          <select name="{$ns}maxDocs"> 
     153            <option value="50"><xsl:if test="$maxdocs=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option> 
     154            <option value="100"><xsl:if test="$maxdocs=100"><xsl:attribute name="selected"></xsl:attribute></xsl:if>100</option> 
     155            <option value="200"><xsl:if test="$maxdocs=200"><xsl:attribute name="selected"></xsl:attribute></xsl:if>200</option> 
     156            <option value="-1"><xsl:if test="$maxdocs=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if>all</option> 
     157          </select> 
     158          hits with  
     159          <select name="hitsPerPage"> 
     160            <option value="10"><xsl:if test="$hits=10"><xsl:attribute name="selected"></xsl:attribute></xsl:if>10 </option>  
     161            <option value="20"><xsl:if test="$hits=20"><xsl:attribute name="selected"></xsl:attribute></xsl:if>20</option> 
     162            <option value="50"><xsl:if test="$hits=50"><xsl:attribute name="selected"></xsl:attribute></xsl:if>50</option> 
     163            <option value="-1"><xsl:if test="$hits=-1"><xsl:attribute name="selected"></xsl:attribute></xsl:if>all</option> 
     164          </select> 
     165          hits per page. 
     166        </td></tr> 
     167      </xsl:if> 
     168  </xsl:template> 
     169     
     170  <xsl:template name="advanced-search-prefs"> 
     171    <xsl:param name="display">n</xsl:param>     
     172    <xsl:variable name="numbox"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qfn']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qfn']/@value"/></xsl:when><xsl:otherwise>4</xsl:otherwise></xsl:choose></xsl:variable> 
     173    <tr id="adv-qnb"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if> 
     174      <td colspan='2'>Number of fields: </td><td><select name="qfn"> 
     175      <option value="2"><xsl:if test="$numbox=2"><xsl:attribute name="selected"></xsl:attribute></xsl:if>2</option>  
     176      <option value="4"><xsl:if test="$numbox=4"><xsl:attribute name="selected"></xsl:attribute></xsl:if>4</option> 
     177      <option value="6"><xsl:if test="$numbox=6"><xsl:attribute name="selected"></xsl:attribute></xsl:if>6</option> 
     178      <option value="8"><xsl:if test="$numbox=8"><xsl:attribute name="selected"></xsl:attribute></xsl:if>8</option> 
     179    </select></td><td/></tr> 
    124180  </xsl:template> 
    125181 
    126182  <xsl:template name="text-search-prefs"> 
    127     <!-- query mode --> 
     183    <xsl:param name="display">n</xsl:param> 
     184    <!-- query mode : 0(default, simple); 1(advanced, boolean)--> 
    128185    <xsl:variable name="querymode"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qm']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qm']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
    129     <tr><td rowspan='2' valign='baseline'>Query mode:</td><td><input type='radio' name='qm' value='0'><xsl:if test="$querymode=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> simple query mode</td></tr> 
    130     <tr><td><input type='radio' name='qm' value='1'><xsl:if test="$querymode=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> advanced query mode (allows boolean searching using !, &amp;, |, and parentheses)</td></tr> 
     186    <tr id="text-qm1"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td rowspan='2' valign='baseline'>Query mode </td><td><input type='radio' name='qm' value='0'><xsl:if test="$querymode=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> simple query mode</td></tr> 
     187    <tr id="text-qm2"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td><input type='radio' name='qm' value='1'><xsl:if test="$querymode=1"><xsl:attribute name="checked"/></xsl:if></input></td><td> advanced query mode (allows boolean searching using !, &amp;, |, and parentheses)</td></tr> 
    131188     
    132189    <!-- query box size --> 
    133190    <xsl:variable name="boxsize"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name='qb']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='qb']/@value"/></xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> 
    134     <tr><td rowspan='2' valign='baseline'>Query box size:</td><td><input type='radio' name='qb' value='0'><xsl:if test="$boxsize=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> regular query box</td></tr> 
    135     <tr><td><input type='radio' name='qb' value='1'><xsl:if test="$boxsize=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> large query box</td></tr> 
    136   </xsl:template> 
     191    <tr id="text-qb1"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td rowspan='2' valign='baseline'>Query box size</td><td><input type='radio' name='qb' value='0'><xsl:if test="$boxsize=0"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> regular query box</td></tr> 
     192    <tr id="text-qb2"><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if><td><input type='radio' name='qb' value='1'><xsl:if test="$boxsize=1"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td><td> large query box</td></tr>     
     193  </xsl:template> 
     194   
     195   
     196  <xsl:template match="service"> 
     197    <xsl:param name="display">n</xsl:param> 
     198    <xsl:param name="prefix"/>     
     199    <xsl:apply-templates select="paramList/param[not(@type='invisible')]"><xsl:with-param name="display" select="$display"/><xsl:with-param name="prefix" select="$prefix"/></xsl:apply-templates> 
     200  </xsl:template> 
     201   
     202  <xsl:template match="param">  
     203    <xsl:param name="ns">s1.</xsl:param> 
     204    <xsl:param name="display">n</xsl:param> 
     205    <xsl:param name="prefix"/> 
     206     
     207    <xsl:if test="not(@name='matchMode') and not(@name='level') and not(@name='index') and not(@name='sortBy') and (@type='boolean' or @type='enum_single')"><xsl:apply-templates select="." mode="radio"><xsl:with-param name="display" select="$display"/><xsl:with-param name="prefix" select="$prefix"/><xsl:with-param name="paramIdx" select="position()"/></xsl:apply-templates></xsl:if>     
     208  </xsl:template> 
     209   
     210  <xsl:template match="param" mode="radio">  
     211    <xsl:param name="ns">s1.</xsl:param> 
     212    <xsl:param name="display">n</xsl:param> 
     213    <xsl:param name="prefix"/> 
     214    <xsl:param name="paramIdx"/> 
     215     
     216    <xsl:variable name="cachedName" select="concat($ns, @name)"/> 
     217    <xsl:variable name="cachedValue"><xsl:choose><xsl:when test="/page/pageRequest/paramList/param[@name=$cachedName]"><xsl:value-of select="/page/pageRequest/paramList/param[@name=$cachedName]/@value"/></xsl:when><xsl:otherwise><xsl:value-of select="@default"/></xsl:otherwise></xsl:choose></xsl:variable> 
     218    <!-- number of options, for rowspan attribute --> 
     219    <xsl:variable name="numOptions" select="count(option)"/> 
     220    <xsl:variable name="displayName"><xsl:value-of select="displayItem"/></xsl:variable> 
     221    <xsl:variable name="paramName"><xsl:value-of select="@name"/></xsl:variable>     
     222     
     223    <xsl:for-each select="option">      
     224      <xsl:variable name="value" select="@name"/> 
     225      <tr><xsl:attribute name="id"><xsl:value-of select="concat($prefix, '-', $paramIdx, '-', position())"/></xsl:attribute><xsl:if test="$display='n'"><xsl:attribute name="style">display:none</xsl:attribute></xsl:if> 
     226      <xsl:if test="position()=1"><td rowspan='{$numOptions}' valign='baseline'><xsl:value-of select="../displayItem"/></td></xsl:if> 
     227      <td><input type='radio' name='{$cachedName}' value="{$value}"><xsl:if test="$cachedValue=$value"><xsl:attribute name="checked"></xsl:attribute></xsl:if></input></td> 
     228      <td><xsl:value-of select="displayItem"/></td> 
     229      </tr> 
     230    </xsl:for-each> 
     231  </xsl:template> 
     232  
    137233</xsl:stylesheet>