Syntax in HTML Extension Files

This section discusses the syntax in .htx files.

<% begindetail %>, <% enddetail %>

The <%begindetail%> and <%enddetail%> 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 <% and %> 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.

For example:

<dl>
<%begindetail%><p>
<dt>
<%CiCurrentRecordNumber%>.
<b><a href="<%vpath%>"><%filename%></a></b>
<dd>
<b><i>Abstract: </i></b><%characterization%><br>
<font size=-1> - size <%size%> bytes - <%write%> GMT</font>
<%enddetail%></dl>

This query does the following:

Note   If there are no records returned from the query, the <%begindetail%> section will be skipped.

<% if %>.. <% else %>.. <% endif %>

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 <%begindetail%> section; but if there are no records returned by the query, to display the text “Sorry, no authors had YTD sales greater than” %sales%. By using the <%if%> statement and a built-in variable called CiLastRecordNumber 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 <%if%> statement.

  <%begindetail%> 
      <%if CiCurrentRecordNumber EQ 1%> 
        Query results:
        <B>Author YTD Sales<BR></B>
      <%endif%> 
      <%au_lname%>$<%ytd_sales%> 
    <%enddetail%> 
    <P>
    <%if CiLastRecordNumber EQ 0%> 
      <I><B>Sorry, no authors had YTD sales greater than </I><%sales%>.</B>
      <P>
    <%else%> 
    <HR>
      <I>
      The Web page you see here was created by merging the results
      of the Content query with the template file Sample.htx.
      <P>
      The merge was done by the Microsoft Index Server and
      the results were returned to this Web browser by the Microsoft
      Internet Information Server.
      </I>
    <%endif%> 
    </BODY>
    </HTML> 

The general syntax is:

   <%if condition%> 
    HTML text
    [ <%else%> 
      HTML text ]
    <%endif%>

where condition is of the form: value1 operator value2 and operator can be one of the following:

EQ
if value1 equals value2

NE
if value1 does not equal value2

LT
if value1 is less than value2

LE
if value1 is less than or equal to value2

GT
if value1 is greater than value2

GE
if value1 is greater than or equal to value2

CONTAINS
if any part of value1 contains the string value2

 ISTYPEEQ
allows the .htx file to determine the VT_TYPE of a particular variable.
value1 IsTypeEq value2 value1 IsTypeEq const1 const1 IsTypeEq value1

For example, if a variable is of type currency (VT_CY) its type is 6. Type numbers are defined in the ActiveX specification. A valid .htx comparison would be:

<%if propName IsTypeEq 6%>Variable is of type currency
<%else%>Variable is NOT type currency
<%endif%> 

This operator is especially useful to check for type VT_EMPTY, an empty property.

ISEMPTY
TRUE if value1 is of type VT_EMPTY, or of type VT_NULL, or is of a textual type (VT_LPSTR, VT_LPWSTR, VT_BSTR, or vectors of the preceding types) and contains only “empty” characters (space, tab, and so on.)

The operands value1 and value2 can be column names, one of the built-in variables, an HTTP variable name (see HTTP Variables), or a constant. When used in an <%if%> statement, values are not delimited with <% and %>. For example, to do special processing on author name “Green,” use the condition:

    <FORM ACTION="<%HTTP_SCRIPT_NAME%>?" METHOD="POST">
      <%if au_lname EQ "Green"%> 
        this guy is green!
      <%endif%> 
    <%enddetail%>

The <%if%> 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.

    <%if HTTP_USER_AGENT contains "Mozilla"%> 
      client supports advanced HTML features
    <%else%> 
      client is <%HTTP_USER_AGENT%> 
    <%endif%>

Property types VT_FILETIME and VT_DATE can be compared within <%if%> statements. Use the following format:

<%if fileTime eq "yyyy/mm/dd hh:mm:ss:iii"%>File times are identical
<%endif%>

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.

yyyy = year
mm = month ( 1=January, 12=December, and so on)
dd = day of month ( 1 - 31)
hh = hour of the day in 24-hour format (optional)
mm = minutes (optional)
ss = seconds (optional)
iii = milliseconds (optional)

For example:

<%if write le "1996/07/21 17:22:11:333"%>File times are identical
<%endif%>

<%EscapeHTML%>, <%EscapeURL%>, <%EscapeRAW%>

The <%EscapeHTML%>, <%EscapeURL%>, and <%EscapeRAW%> keywords can be used to affect the formatting of output strings. These are typically used with variables such as CiRestriction, or CiScope when used in a form or in an anchor.

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:

<%EscapeHTML variable%>     or
<%EscapeURL variable%>      or
<%EscapeRAW variable%>

where variable is any parameter or variable that could be used in the HTTP Extension file. Constant values can also be used, as in, <%EscapeURL /scripts/query.idq%>.

<%EscapeHTML%> (the default formatting) is used to escape characters that are meaningful in HTML. For example, the symbol > will appear as &gt;.

<%EscapeURL%> is used to do standard escaping for strings that will be URLs (as in the HREF tag of an anchor). For example, the string @size > 10000; will appear as %40size+%3E+10000.

<%EscapeRAW%> 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.

File Inclusion

The <%include%> keyword can interpolate the contents of a file into the .htx file. The syntax of the construct is

<%include filename%> 

where filename is the name of the file to be included. The file is named with a full virtual path name, and HTML extension constructs are interpreted if found in the file. File includes can be nested, but the total number of include files cannot exceed 31.


© 1997 by Microsoft Corporation. All rights reserved.