Net.Data 宏包含 HTML 块,它在 Web 浏览器上生成文本呈示语句,例如 HTML。在宏中,必须指定至少一个 HTML 块,多则不限。每个 HTML 块在 浏览器上生成一个 Web 页面。Net.Data 在每次被调用时仅处理一个 HTML 块。要创建一个由许多 Web 页面 组成的应用程序,您可以多次调用 Net.Data,以便处理那些使用标准的游历技术(例如,链和表)的 HTML 块。
任何有效的正文呈示语句,例如 HTML 或 JavaScript,都可以出现在 HTML 块中。另外,在 HTML 块中还可以使用 INCLUDE 语句、函数调用和变量引用。下例显示 Net.Data 宏中的 HTML 块的一般用法:
%DEFINE DATABASE="MNS96"
%HTML(INPUT) {
<H1>Hardware Query Form</H1>
<HR>
<FORM METHOD="POST" ACTION="/cgi-bin/db2www/equiplst.d2w/report">
<dl>
<dt>What hardware do you want to list?
<dd><input type="radio" name="hdware" value="MON" checked>Monitors
<dd><input type="radio" name="hdware" value="PNT">Pointing devices
<dd><input type="radio" name="hdware" value="PRT">Printers
<dd><input type="radio" name="hdware" value="SCN">Scanners
</dl>
<HR>
<input type="submit" value="Submit">
</FORM>
%}
%FUNCTION(DTW_SQL) myQuery() {
SELECT MODNO, COST, DESCRIP FROM EQPTABLE WHERE TYPE=$(hdware)
%REPORT{
<B>Here is the list you requested:</B><BR>
%ROW{
<HR>
$(N1): $(V1) $(N2): $(V2)
<P>
$(V3)
%}
%}
%}
%HTML(REPORT){
@myQuery()
%}
您可以如下例所示来从 HTML 链接中调用 Net.Data 宏:
<a href="http://www.ibm.com/cgi-bin/db2www/equiplst.d2w/input"> List of hardware</a>
当应用程序用户单击此链接时,Web 浏览器调用 Net.Data,Net.Data 语法分析宏。当 Net.Data 开始处理在调用上指定的 HTML 块时(在此情况下为 HTML(INPUT) 块),它开始处理其中 的文本。Net.Data 对于不能识别为 Net.Data 宏语言结构的任何东西,都发送到浏览器显示。
在用户作出选择并按了 Submit 按钮之后,Net.Data 运行 HTML FORM 元素的 ACTION 部分, 这指出了对 Net.Data 宏的 HTML(OUTPUT) 块的调用。然后,Net.Data 象处理 HTML(INPUT) 块那样处理 HTML(OUTPUT) 块。
Net.Data 然后处理 myQuery() 函数调用,该函数调用依次调用 SQL FUNCTION 块。用在输入表中返回的值代替 SQL 语句中引用的 $(hdware) 变量之后,Net.Data 运行查询。在此点,Net.Data 继续处理报表,根据 REPORT 块中指定的 文本呈示语句来显示查询的结果。
Net.Data 完成 REPORT 块的处理之后,返回至 HTML(OUTPUT) 块,并结束处理。