管理与程序设计指南

XML 块

当您想要将 XML 传递至另一处理应用程序或客户机浏览器如 Microsoft Internet Explorer 版本 5 时,可使用 XML 块结构来传递 XML 内容。

XML 块的工作方式与 HTML 块相同;它是宏的入口点或出口点。在这个块中,可以直接输入 XML 标记,引用变量和进行函数调用。当在 XML 块中进行函数调用时,Net.Data 知道应使用 XML 标记而不是 HTML 来显示结果。

因此,您可以定制生成的 XML 文档以满足您的需要,XML 块不生成 prolog 标记。输入您的企业特定的 prolog 信息,并包括您选择的样式表。Net.Data 附带提供了三个您可以使用的 XSL 样式表。这些样式表包含用于 Net.Data 生成的所有 XML 和 HTML 元素的变换(生成的 HTML 元素符合生成 XHTML 的标准)。但是这些样式表只是一些示例, 我们鼓励您扩展这些样式表,或创建您自己的样式表。

图 20. 包含 XML 报告块的宏

%DEFINE DATABASE = "SAMPLE"
 
%FUNCTION(DTW_SQL) NewManager(){
select * from staff where job = 'Mgr' and years <= 5
%}
 
%XML(report) {
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="ndTable.xsl" ?>
 
<XMLBlock>
  <h1>List of New Managers</h1>
  @NewManager()
</XMLBlock>
%}
 

Net.Data 使用一小组元素在 XML 块中生成信息,如以下文档说明所示:

<!-------------------------------------------------------->
<!-- The root element used in all XML output generated  -->
<!-- by Net.Data is the XMLBlock element.               -->
<!-------------------------------------------------------->
<!ELEMENT XMLBlock (RowSet|ShowSQL|Message)*>
<!ATTLIST XMLBlock name   CDATA #IMPLIED>
 
<!-------------------------------------------------------->
<!-- The default presentation format for tables uses    -->
<!-- the RowSet, Row, and Column elements.              -->
<!-------------------------------------------------------->
<!ELEMENT RowSet   (Row)*>
<!ATTLIST RowSet   name   CDATA #IMPLIED>
<!ELEMENT Row      (Column)*>
<!ATTLIST Row      name   CDATA #IMPLIED
                   number CDATA #IMPLIED>
<!ELEMENT Column   (#PCDATA)>
 
<!-------------------------------------------------------->
<!-- SQL statements resulting from setting the SHOWSQL  -->
<!-- variable are presented with the ShowSQL element.   -->
<!-------------------------------------------------------->
<!ELEMENT ShowSQL  (#PCDATA)>
 
<!-------------------------------------------------------->
<!-- SQL statements resulting from setting the SHOWSQL  -->
<!-- variable are presented with the ShowSQL element.   -->
<!-------------------------------------------------------->
<!ELEMENT Message  (#PCDATA)>
 

这些元素定义如下:

XMLBlock
包含 XML 块的数据显示部分。此标记必须人工输入。

RowSet
由 Net.Data 生成。包含结果集中的行。RowSet 的名称属性按如下方式确定:

示例:

如果在 XML 块中调用了以下函数, 则将把其相关联的 RowSet 显示如下。

%FUNCTION(DTW_SQL) call_sp() {
		CALL stored_proc
%}
 
%XML(report){
...
<RowSet name="call_sp" number="1">...</RowSet>
<RowSet name="call_sp" number="2">...</RowSet>
...
%}
 

Row
由 Net.Data 生成。包含一行中的列,并作了编号以便于标识。

Column
由 Net.Data 生成。包含特定行及该行据其命名的列的数据值。

通过使用以上元素,Net.Data 将从图 20中列示的宏生成以下输出。

Content-type: text/xml
 
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="ndTable.xsl" ?>
<XMLBlock>
  <h1>List of New Managers</h1>
  <RowSet name="NewManager">
    <Row number="1">
      <Column name="ID">30</Column>
      <Column name="NAME">Marenghi</Column>
      <Column name="DEPT">38</Column>
      <Column name="JOB">Mgr</Column>
      <Column name="YEARS">5</Column>
      <Column name="SALARY">17506.75</Column>
      <Column name="COMM"></Column>
    </Row>
    <Row number="2">
      <Column name="ID">240</Column>
      <Column name="NAME">Daniels</Column>
      <Column name="DEPT">10</Column>
      <Column name="JOB">Mgr</Column>
      <Column name="YEARS">5</Column>
      <Column name="SALARY">19260.25</Column>
      <Column name="COMM"></Column>
    </Row>
  </RowSet>
</XMLBlock>
 

图 21图 22显示了 当使用 Net.Data 附带提供的两个样式表(ndTable.xsl 和 ndRecord.xsl)时,上述数据在浏览器中的外观。

图 21. 使用 ndTable.xsl 样式表显示的 XML


使用 ndTable.xsl 样式表显示的 XML

图 22. 使用 ndRecord.xsl 样式表显示的 XML


使用 ndTable.xsl 样式表显示的 XML


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