windows-nt/Source/XPSP1/NT/inetsrv/query/web/html/help/htxhelp.htm
2020-09-26 16:20:57 +08:00

440 lines
47 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Microsoft Index Server Guide: HTML Extension Files</title>
<meta name="FORMATTER" content="Microsoft FrontPage 1.1">
<meta name="FORMATTER" content="Microsoft FrontPage 1.1">
<meta name="FORMATTER" content="Microsoft FrontPage 1.1">
<meta name="FORMATTER" content="Microsoft FrontPage 1.1">
<meta name="GENERATOR" content="Microsoft FrontPage 1.1">
</head>
<body bgcolor="#FFFFFF">
<!--Headerbegin--><p align=center><a name="TOP"><img src="onepix.gif" alt="Space" align=middle width=1 height=1></a> <a href="default.htm#Top"><img src="toc.gif" alt=" Contents" align=middle border=0 width=89 height=31></a> <a href="idqhelp.htm"><img src="previous.gif" alt="Previous" align=middle border=0 width=32 height=31></a> <a href="idq-vars.htm"><img src="next.gif" alt="Next" align=middle border=0 width=32 height=31></a> </p>
<hr>
<!--Headerend--><p><a name="HTMLExtensionFiles"><font size=6><strong>HTML Extension Files</strong></font></a></p>
<p align=left><!--Chaptoc--></p>
<blockquote>
<p><a href="htxhelp.htm#exec">Query Execution Parameters </a><br>
<a href="htxhelp.htm#pages">Query Result Pages </a><br>
<a href="htxhelp.htm#Syntax">Syntax</a> <br>
<a href="htxhelp.htm#recordnumbers">Record Numbers and Counts </a><br>
<a href="htxhelp.htm#idqvars">Parameters from Internet Data Query files </a><br>
<a href="htxhelp.htm#pagenav">Navigating Between Pages in Query Results </a><br>
<a href="htxhelp.htm#formatvar">Variables Affecting the Formatting of Results </a><br>
<a href="htxhelp.htm#httpvar">HTTP Variables </a><br>
<a href="htxhelp.htm#errors">Error Pages </a><br>
</p>
</blockquote>
<hr>
<!--ChaptocEnd--><p>HTML extension (.htx) files for Microsoft Index Server are very similar to HTML extension files for the Internet Database
Connector. There are some differences; this page explains the features of Index Server extension files and the keywords
contained in those files..</p>
<p><strong>Note</strong>&#160;&#160;&#160;All path names to .htx files must be either full virtual paths or full physical paths with no &#147;.&#148; or &#147;..&#148; components.This
applies to .htx files referenced in CiTemplate or as include files.</p>
<p>Do not put these files on a virtual root pointing to a remote Uniform Naming Convention (UNC) share.</p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="exec">Query Execution Parameters </a></h1>
<p>A number of situations leading to unexpected query results are flagged by using built-in variables available in the .htx file. Most
.htx pages should include a <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if...<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> test on these variables.</p>
<p><strong>CiOutOfDate</strong> will be set to the value 1 if the content index has files to filter, or scans to complete. Missing results are
possible, because information about particular documents is either from an old version of the document or missing. When this
variable is set, it is possible to get results including deleted files, and files whose current version does not match the query.</p>
<p><strong>CiQueryTimedOut</strong> will be set to the value 1 when the amount of CPU time spent executing the query exceeds the limit
specified in the <a href="reghelp.htm#MaxQueryTime">registry</a>. The variable will be valid for all pages in the result for <a href="idqhelp.htm">nonsequentially executed queries</a>. For
<a href="idqhelp.htm#SeqQuery">sequentially executed queries</a>, the <b>CiQueryTimedOut</b> variable is valid only after all available results for the query have been
displayed.</p>
<p><strong>CiQueryIncomplete</strong> will be set to the value 1 if some portion of the query restriction was ignored. This can occur when a
query is forced to use the content index.</p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="pages">Query Result Pages </a></h1>
<p>Query results are split into pages based upon the parameter <b>CiMaxRecordsPerPage</b>. The total number of query result
records is governed by the parameter <b>CiMaxRecordsInResultSet</b>. The current page number in the result set is given in the
variable <b>CiCurrentPageNumber</b>. For a nonsequential query, the <b>CiTotalNumberPages</b> variable gives the total number of
pages in the result and <b>CiRecordsNexPage</b> gives the number of records on the next page. The variables
<b>CiContainsFirstRecord</b> and <b>CiContainsLastRecord</b> indicate whether the current page is the first or last in the result set.
For an example of how to navigate between pages See <a href="#pagenav">Navigating Between Pages in Query Results</a>, later on this page. </p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="Syntax">Syntax</a></h1>
<p>This section discusses the syntax in .htx files.</p>
<h2><!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan --><a name="detail">begindetai</a>l<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan -->, <!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan -->enddetail<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></h2>
<p>The <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> and <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>enddetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> tags surround a section of the HTML extension file in which the results of
the search will be merged. The section will be interpreted once for each record matching the query on the page. Within the
section, the column names delimited with <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> and <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> are used to mark the position of the returned data from the query.
There can be only one detail section in the HTML extension file. </p>
<p>For example:</p>
<blockquote>
<pre>&lt;dl&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&lt;p&gt;
&lt;dt&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiCurrentRecordNumber<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->.
&lt;b&gt;&lt;a href=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeURL <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->path<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot;&gt;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->filename<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&lt;/a&gt;&lt;/b&gt;
&lt;dd&gt;
&lt;b&gt;&lt;i&gt;Abscract: &lt;/i&gt;&lt;/b&gt;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->characterization<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&lt;br&gt;
&lt;font size=-1&gt; - size <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->size<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> bytes - <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->write<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> GMT&lt;/font&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->enddetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&lt;/dl&gt;</pre>
</blockquote>
<p>This query shows the name of the file where the search stringcomes from, gives a brief absract of the file, shows the size of the
file in bytes, and shows when the file was last modified.</p>
<p><strong>Note</strong>&#160;&#160;&#160;If there are no records returned from the query, the <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> section will be skipped.</p>
<h2><!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan --><a name="ifstatement">if<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></a>..<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan --><a name="else">else<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></a>..<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan --><a name="endif">endif<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></a></h2>
<p>HTML extension files can contain conditional logic with an if-then-else statement to control how the Web page is constructed.
For example, one common usage is to insert a condition to display a header for the query on the first row within a <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<code>begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> section; but if there are no records returned by the query, to display the text &#147;Sorry, no authors had YTD
sales greater than&#148; <tt>%sales%</tt>. By using the <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> statement and a built-in variable called <b>CiLastRecordNumber</b> you can
tailor the output so that the error message is printed when no records are returned. Here is an example showing the use of the
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> statement. </p>
<pre><font size=2><tt> <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></tt></font><tt>begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if CiCurrentRecordNumber EQ 1<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
Query results:
&lt;B&gt;Author YTD Sales&lt;BR&gt;&lt;/B&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->au_lname<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->$<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->ytd_sales<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->enddetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;P&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if CiLastRecordNumber EQ 0<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;I&gt;&lt;B&gt;Sorry, no authors had YTD sales greater than &lt;/I&gt;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->sales<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->.&lt;/B&gt;
&lt;P&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->else<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;HR&gt;
&lt;I&gt;
The Web page you see here was created by merging the results
of the Content query with the template file Sample.htx.
&lt;P&gt;
The merge was done by the Microsoft Index Server and
the results were returned to this Web browser by the Microsoft
Internet Information Server.
&lt;/I&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;/BODY&gt;
&lt;/HTML&gt; </tt></pre>
<p>The general syntax is: </p>
<pre> <font size=2> </font><tt> <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if condition<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
HTML text
[ <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->else<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
HTML text ]
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> </tt></pre>
<p>where condition is of the form: <i>value1</i> <i>operator</i> <i>value2</i> and <i>operator</i> can be one of the following: </p>
<blockquote>
<dl>
<dt><strong>EQ</strong></dt>
<dd>if <em>value1</em> equals <em>value2</em><br>
</dd>
<dt><strong>NE</strong></dt>
<dd>if <em>value1</em> does not equal <em>value2</em><br>
</dd>
<dt><strong>LT</strong></dt>
<dd>if <em>value1</em> is less than <em>value2</em><br>
</dd>
<dt><strong>LE</strong></dt>
<dd>if <em>value1</em> is less than or equal to <em>value2</em><br>
</dd>
<dt><strong>GT</strong></dt>
<dd>if <em>value1</em> is greater than <em>value2</em><br>
</dd>
<dt><strong>GE</strong> </dt>
<dd>if <em>value1</em> is greater than or equal to <em>value2</em><br>
</dd>
<dt><strong>CONTAINS</strong></dt>
<dd>if any part of <em>value1</em> contains the string <em>value2</em><br>
</dd>
<dt>&#160;<strong>ISTYPEEQ</strong></dt>
<dd>allows the .htx file to determine the VT_TYPE of a particular variable.<br>
<dl>
<dd><pre>value1 IsTypeEq value2
value1 IsTypeEq const1
const1 IsTypeEq value1 </pre>
</dd>
</dl>
<p>For example, if a variable is of type currency (VT_CY) its type is 6. Type numbers are defined in the
OLE specification. A valid .htx comparison would be: </p>
<dl>
<dd><pre><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if propName IsTypeEq 5<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->Variable is of type currency
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->else<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->Variable is NOT type currency
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> </pre>
</dd>
</dl>
</dd>
</dl>
</blockquote>
<p>This operator is especially useful to check for type <strong>VT_EMPTY</strong>, an empty property.</p>
<blockquote>
<dl>
<dt>&#160;<strong>ISEMPTY</strong></dt>
<dd><strong>TRUE</strong> if value1 is of type <strong>VT_EMPTY</strong>, or of type <strong>VT_NULL</strong>, or is of a textual type (<strong>VT_LPSTR</strong>,
<strong>VT_LPWSTR</strong>, <strong>VT_BSTR</strong>, or vectors of the preceding types) and contains only &#147;empty&#148; characters
(space, tab, and so on.)</dd>
</dl>
</blockquote>
<p>The operands <i>value1</i> and <i>value2</i> can be column names, one of the built-in variables, an HTTP variable name (see <a href="#httpvar">HTTP
Variables</a> later on this page), or a constant. When used in an <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> statement, values are not delimited with <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> <code>and</code> <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
. For example, to do special processing on author name &#147;Green,&#148; use the condition: </p>
<pre><font size=2><tt> </tt></font><tt>&lt;FORM ACTION=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->HTTP_SCRIPT_NAME<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->?&quot; METHOD=&quot;POST&quot;&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if au_lname EQ &quot;Green&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
this guy is green!
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->enddetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> </tt></pre>
<p>The <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> statement can also be used to do special processing based on information from HTTP variables. For example,
to format a page differently based on the type of client Web browser you could include the following in the HTML extension
file. </p>
<pre><tt> </tt><font size=2><tt> </tt></font><tt> <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if HTTP_USER_AGENT contains &quot;Mozilla&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
client supports advanced HTML features
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->else<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
client is <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->HTTP_USER_AGENT<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> </tt></pre>
<p>Property types <strong>VT_FILETIME</strong> and <strong>VT_DATE</strong> can be compared within <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>if<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> statements. Use the following format: </p>
<blockquote>
<pre><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if fileTime eq &quot;yyyy/mm/dd hh:mm:ss:iii&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->FIle times are identical
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></pre>
</blockquote>
<p>The time must be enclosed in quotes. The year must be a four-digit number (for example, 1996, not 96), and slashes and
colons are required. </p>
<blockquote>
<p>yyyy = year<br>
mm = month ( 1=January, 12=December, and so on)<br>
dd = day of month ( 1 - 31)<br>
hh = hour of the day in 24-hour format (optional)<br>
mm = minutes (optional)<br>
ss = seconds (optional)<br>
iii = milliseconds (optional) </p>
</blockquote>
<p>For example: </p>
<blockquote>
<pre><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->if write eq &quot;1996/07/21 17:22:11:333&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->File times are identical
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></pre>
</blockquote>
<h2><!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan --><a name="escapes">EscapeHTML<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></a>, <!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeURL<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan -->, <!--VERMEER BOT=HTMLMarkup StartSpan --><h2>&lt;%</h2><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeRAW<!--VERMEER BOT=HTMLMarkup StartSpan --><h2>%&gt;</h2><!--VERMEER BOT=HTMLMarkup EndSpan --></h2>
<p>The <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeHTML<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code>, <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeURL<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code><b>,</b> and <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeRAW<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> keywords can be used to affect the formatting of
output strings. These are typically used with variables such as <b>CiRestriction,</b> or <b>CiScope</b> when used in a form or in an
anchor. </p>
<p>The output of variables is normally suitable for HTML format. The preceding keywords affect the output format so that the
variable can be used correctly in different contexts. The form of the construct is: </p>
<blockquote>
<pre><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeHTML <em>variable<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></em> or
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeURL <em>variable<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></em> or
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->EscapeRAW <em>variable<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></em> </pre>
</blockquote>
<p>where <i>variable</i> is any parameter or variable that could be used in the HTTP Extension file. Constant values can also be used,
as in, <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><tt>EscapeURL /scripts/query.idq<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></tt>. </p>
<p><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeHTML<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code><strong> </strong>(the default formatting) is used to escape characters that are meaningful in HTML. For example, the
symbol &gt; will appear as <tt>&amp;gt;</tt>. </p>
<p><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeURL<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code><strong> </strong>is used to do standard escaping for strings that will be URLs (as in the HREF tag of an anchor). For
example, the string <tt>@size &gt; 10000</tt>; will appear as <tt>%40size+%3E+10000</tt>. </p>
<p><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>EscapeRAW<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code><strong> </strong>is used when no escaping should be done. This might be the case for a variable that is being used as the
value of a form variable, or to have the value of a variable that contains HTML code to be interpreted correctly. </p>
<h2><a name="fileinclude">File Inclusion </a></h2>
<p>The <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>include<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code> keyword can be used to interpolate the contents of a file into the HTTP Extension page. The syntax of
the construct is </p>
<blockquote>
<pre><!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><font size=3><code>include </code><code><i>filename<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></i></code></font> </pre>
</blockquote>
<p>where <i>filename</i> is the name of the file to be included. The file is named with a full virtual path name, and HTTP Extension
constructs are interpreted if found in the file. File includes can be nested, cannot exceed 31 include files total.. </p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="recordnumbers">Record Numbers and Counts </a></h1>
<p>The <b>CiCurrentRecordNumber</b> built-in variable contains the record number of the current record (1-based). The record
number starts at [(<i>page-number</i> - 1) * <i>records-per-page</i>] + 1 for any page. Each time through the <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --><code>begindetail<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code>
section, the value of <b>CiCurrentRecordNumber</b> increases by one. </p>
<p>The <b>CiMatchedRecordCount</b> built-in variable contains the value of the total number of records matched in the query (limited
to <b>CiMaxRecordsInResultSet</b>). The <b>CiRecordsNextPage</b> built-in variable contains the number of records that will appear
on the next page. Referring to either <b>CiMatchedRecordCount</b> or <b>CiRecordsNextPage</b> will cause the query to be
nonsequential. </p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="idqvars">Parameters from Internet Data Query files </a></h1>
<p>A number of predefined parameters are supplied, which can be set in the Internet Data Query files. See <a href="idq-vars.htm#htxvars">Variables in .htx and
.idq Files</a>.</p>
<p>In addition, any CGI variable, form parameter, or variable defined in the .idq file can be referred to in the HTTP Extension file
by enclosing the variable name in <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> <code>and</code> <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->. If a variable is referred to that has not been assigned a value, it will result in a
null string being sent to the output. </p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="pagenav">Navigating Between Pages in Query Results </a></h1>
<p>The first record on a page is identified in the variable <b>CiBookmark</b>, which can be used in a form to get to the next page or the
previous page. The form variable <b>CiBookmarkSkipCount</b> should be used with <b>CiBookmark</b> to specify the relative offset
from the current page. <b>CiBookmarkSkipCount</b> is typically set to either <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> or -<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->, although it could be set to other multiples of <b>CiMaxRecordsPerPage</b>. </p>
<p>Here is an example of a form that will skip to the next page for a sequential query follows: </p>
<pre><tt> </tt><font size=2><tt> </tt></font><font size=3><code>&lt;FORM ACTION=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code>HTTP_SCRIPT_NAME<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->?&quot; METHOD=&quot;POST&quot;&gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmark&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiBookmark<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmarkSkipCount&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiMaxRecordsPerPage&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiRestriction&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiRestriction<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiScope&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiScope<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;SUBMIT&quot; VALUE=&quot;Next page&quot;&gt;
&lt;/FORM&gt;</font></pre>
<p>The following example shows how the buttons for going to adjacent pages can be generated conditionally depending upon the
variables <b>CiContainsFirstPage</b> and <b>CiContainsLastPage</b>. It also shows how the number of hits on the next page can be
displayed for a nonsequential query. </p>
<pre> <font size=2> </font><font size=3><code>&lt;TABLE&gt; &lt;TR&gt;
&lt;TD&gt; <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code>if CiContainsFirstRecord eq 0<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;FORM ACTION=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->HTTP_SCRIPT_NAME<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->?&quot; METHOD=&quot;POST&quot;&gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmark&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiBookmark<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmarkSkipCount&quot;
VALUE=&quot;-<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiMaxRecordsPerPage&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiRestriction&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiRestriction<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiScope&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiScope<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;SUBMIT&quot; VALUE=&quot;Previous <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> Hits&quot;&gt;
&lt;/FORM&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> &lt;/TD&gt;</font></pre>
<pre><font size=3><code> &lt;TD&gt; <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --></code>if CiContainsLastRecord eq 0<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->
&lt;FORM ACTION=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->HTTP_SCRIPT_NAME<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->?&quot; METHOD=&quot;POST&quot;&gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmark&quot;
VALUE=&quot;<code>&lt;</code>CiBookmark<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiBookmarkSkipCount&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiMaxRecordsPerPage&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiMaxRecordsPerPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiRestriction&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiRestriction<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;HIDDEN&quot;
NAME=&quot;CiScope&quot;
VALUE=&quot;<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiScope<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->&quot; &gt;
&lt;INPUT TYPE=&quot;SUBMIT&quot; VALUE=&quot;Next <!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->CiRecordsOnNextPage<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> Hits&quot;&gt;
&lt;/FORM&gt;
<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>&lt;%</code></font><!--VERMEER BOT=HTMLMarkup EndSpan -->endif<!--VERMEER BOT=HTMLMarkup StartSpan --><font size=3><code>%&gt;</code></font><!--VERMEER BOT=HTMLMarkup EndSpan --> &lt;/TD&gt;
&lt;/TR&gt; &lt;/TABLE&gt; </font></pre>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="formatvar">Variables Affecting the Formatting of Results </a></h1>
<p>Some variables that can be set in the .idq file affect the formatting of data in the .htx file. The variable <a href="idq-vars.htm#CiLocale"><b>CiLocale</b></a> may be set to
affect the formatting of dates, times, currency values, and floating point numbers according to <a href="glossary.htm#NLS">NLS conventions</a>. If <b>CiLocale</b> is
not set, the locale is set from the client&#146;s browser or the server&#146;s default locale, in order of priority.</p>
<p>To change the formatting of datatypes, modify settings in the <strong>Regional Settings</strong> in the Windows NT <strong>Control Panel</strong>. </p>
<p>A <a href="idq-vars.htm#vecvars">set of variables</a> taken from the .idq file will be used to enclose and separate elements of column values that are vectors.
Unlike all other variables set in the .idq file, these variables cannot be referred to explicitly in the .htx file. </p>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="httpvar">HTTP Variables </a></h1>
<p>Several variables in HTML extension files can give a lot of information about the environment and Web client connected to the
server. In addition, all headers sent by the client are available. For Index Server to access these headers, you must convert
them: </p>
<ol>
<li>Add HTTP_ to the beginning </li>
<li>Convert all dashes to underscores. </li>
<li>Convert all letters to uppercase. </li>
</ol>
<p>The following list gives a listing of default variables.</p>
<dl>
<dt><strong>ALL_HTTP</strong></dt>
<dd>All HTTP headers that were not already parsed into one of the listed variables. These variables are of the form
HTTP_<em>header field name</em> with successive variables separated by a newline character, for example:</dd>
</dl>
<blockquote>
<pre>HTTP_ACCEPT: */*, q=0.300, audio/x-aiff, audio/basic, image/jpeg, image/gif, text/plain, text/html
HTTP_USER_AGENT: Microsoft Internet Explorer/0.1 (Win32)
HTTP_REFERER: http://webserver/samples/dbsamp/dbsamp3.htm
HTTP_CONTENT_TYPE: application/x-www-form-urlenPRE: 10
HTTP_EXTENSION: Security/Digest</pre>
</blockquote>
<dl>
<dt><strong>AUTH_TYPE</strong></dt>
<dd>The type of authorization in use. If the user name has been authenticated by the server, this will contain Basic.
Otherwise, it will not be present.</dd>
<dd>&#160;</dd>
<dt><strong>CONTENT_LENGTH</strong></dt>
<dd>The number of bytes that the script can expect to receive from the client.</dd>
<dd>&#160;</dd>
<dt><strong>CONTENT_TYPE</strong></dt>
<dd>The content type of the information supplied in the body of a POST request.</dd>
<dd>&#160;</dd>
<dt><strong>GATEWAY_INTERFACE</strong></dt>
<dd>The revision of the CGI (Common Gateway Interface) specification with which this server complies. The current version
is CGI/1.1.</dd>
</dl>
<dl>
<dt><strong>HTTP_ACCEPT</strong> </dt>
<dd>Special-case HTTP header. Values of the Accept: fields are concatenated, separated by &#147;, &#148;; for example, if the
following lines are part of the HTTP header: accept: */*; q=0.1 accept: text/html accept: image/jpeg then the
<strong>HTTP_ACCEPT</strong> variable will have a value of: */*; q=0.1, text/html, image/jpeg.</dd>
<dd>&#160;</dd>
<dt><strong>PATH_INFO</strong></dt>
<dd>Additional path information, as given by the client. This comprises the trailing part of the URL after the script name but
before the query string (if any).</dd>
<dd>&#160;</dd>
<dt><strong>PATH_TRANSLATED</strong></dt>
<dd>This is the value of <strong>PATH_INFO</strong>, but with any virtual path name expanded into a directory specification.</dd>
<dd>&#160;</dd>
<dt><strong>QUERY_STRING</strong></dt>
<dd>The information that follows the question mark (?) in the URL that referenced this script.</dd>
<dd>&#160;</dd>
<dt><strong>REMOTE_ADDR</strong></dt>
<dd>The IP address of the client.</dd>
<dd>&#160;</dd>
<dt><strong>REMOTE_HOST</strong></dt>
<dd>The hostname of the client.</dd>
<dd>&#160;</dd>
<dt><strong>REMOTE_USER</strong></dt>
<dd>This contains the user name supplied by the client and authenticated by the server.</dd>
<dd>&#160;</dd>
<dt><strong>REQUEST_METHOD</strong></dt>
<dd>The HTTP request method.</dd>
<dd>&#160;</dd>
<dt><strong>SCRIPT_NAME</strong></dt>
<dd>The name of the script program being run.</dd>
<dd>&#160;</dd>
<dt><strong>SERVER_NAME</strong></dt>
<dd>The server&#146;s hostname (or IP address) as it should appear in self-referencing URLs.</dd>
<dd>&#160;</dd>
<dt><strong>SERVER_PORT</strong></dt>
<dd>The TCP/IP port on which the request was received.</dd>
<dd>&#160;</dd>
<dt><strong>SERVER_PROTOCOL</strong></dt>
<dd>The name and version of the information-retrieval protocol relating to this request, usually HTTP/1.0.</dd>
<dd>&#160;</dd>
<dt><strong>SERVER_SOFTWARE</strong></dt>
<dd>The name and version of the Web server under which the Internet Server Extension is running.</dd>
</dl>
<hr>
<h1><a href="#TOP"><img src="up.gif" alt="To Top" align=middle border=0 width=14 height=11></a><a name="errors">Error Pages </a></h1>
<p>Through settings in the Windows NT registry, it is possible to configure HTTP Extension pages that are displayed in case of
errors encountered while executing a search. Any of the following error types can cause an error page to be displayed: </p>
<blockquote>
<dl>
<dt>Query error</dt>
<dd>An error in a query specification (<strong>CiRestriction</strong>). This is most likely a user error.<br>
</dd>
<dt>Error in HTTP Extension file</dt>
<dd>An error was found while formatting the HTTP Extension file. This is probably a configuration error.<br>
</dd>
<dt>Error in Internet Data Query file</dt>
<dd>An error was found in the query parameter file. This is probably a configuration error, although it might
also occur due to unexpected data input from a form.<br>
</dd>
<dt>Some other error</dt>
<dd>An unspecified error occurred. </dd>
</dl>
</blockquote>
<p>Error pages have access to some of the variables available to HTTP Extension files. In addition, there is a variable
<b>CiErrorMessage</b>, which gives a message describing the error. See the <a href="errorhlp.htm">Error Messages</a> page for a list of the possible values
of <b>CiErrorMessage</b>. </p>
<!--Footerbegin--><hr>
<p align=center><a href="default.htm#Top"><img src="toc.gif" alt=" Contents" align=middle border=0 width=89 height=31></a> <a href="idqhelp.htm"><img src="previous.gif" alt="Previous" align=middle border=0 width=32 height=31></a> <a href="#TOP"><img src="up_end.gif" alt="To Top" align=middle border=0 width=32 height=31></a> <a href="idq-vars.htm"><img src="next.gif" alt="Next" align=middle border=0 width=32 height=31></a> </p>
<hr>
<p align=center><em>&#169; 1996 by Microsoft Corporation. All rights reserved.<!--Footerend--></em></p>
</body>
</html>