当您想要将 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 的标准)。但是这些样式表只是一些示例, 我们鼓励您扩展这些样式表,或创建您自己的样式表。
%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)>
这些元素定义如下:
示例:
如果在 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> ... %}
通过使用以上元素,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
![]() |
图 22. 使用 ndRecord.xsl 样式表显示的 XML
![]() |