管理与程序设计指南

HTML 和 XML 块

客户机应用程序通过指定宏名和其中一个宏的入口点的名称来调用 Net.Data。宏的入口点可以任意为 HTML 块或 XML 块。这些块包含大多数文档标记, 是进行函数调用的地方。它们是宏的“主”程序块。

因为入口点块驱动宏的执行,所以宏中必须至少有一个入口点块。可以有多个 HTML 块或 XML 块,但每个客户机请求只执行一个入口点块。并且,对于每个请求,将单一文档返回至客户机。 要创建由许多客户机文档组成的应用程序,可以使用标准导航技术(如链接和表单)多次调用 Net.Data,以处理各种 HTML 或 XML 块。

HTML 或 XML 块中可以出现任何文本表示语句,只要它们对客户机有效即可。例如,HTML 块可以包含 HTML 或 JavaScript。Net.Data 不执行 JavaScript, 但与 HTML 块输出的其余部分一起被发送至客户机,以便执行和显示。在 HTML 或 XML 块中,还可包括函数调用、变量引用和 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) 块,并结束处理。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]