• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

我们要返回每个表单的X M L标识作为SQL Server数据的一部分。
这个过程将会为我们生成一个记录集,按照其中的步骤来生成X M L文档。记录集中的每一
行都要含有各个表格的完整X M L标识以及表格类型。用F o r m - t y p e来对生成的X M L进行排序和分
组,同时也生成< F O R M S >标识的T Y P E属性。
接着,我们开始一个循环,将结果写下来,每条记录都以< / F O R M >作为结束标识,并插入
带有T Y P E属性集的一个新的开始标识。对每一条记录都进行如下过程:
程序清单1 5 - 7
生成对应记录的X M L后,还有一些S Q L语句留下的字符,所以我们去掉这些字符:
程序清单1 5 - 8
然后我们将记录返回给客户,在记录集中跳到下一条记录:
程序清单1 5 - 9
第15章实例研究1—数据双重性使用667
下载
图1 5 - 4是我们生成的X M L文档的结构(含有一些样本数据),这是在IE 5中显示的结果。
图15-4
一个简单的开发窍门是一旦生成X M L的A S P正常工作,就将浏览器产生的X M L存储起来。
这样你就可以生成测试数据。当对基于生成X M L的A S P其他页面进行测试时需要用这些
测试数据(要想生成这些数据,只要在浏览器中查看XML文档时选择File下的Save As...)。
用XML Notepad或你喜欢的A S C I I编辑器可以方便地编辑测试数据。使用这些从X M L文档
中生成的测试数据,令你能用真实数据的一个子集进行检验,从而去除了调试过程中的
一个潜在错误发生源,你也不用担心复杂的S Q L和底层表格,因为可以确信数据的形式是
正确的。我发现这是一种非常有效的增强产品性能的技巧。
站在使用的角度上,最简单的办法是单独调试生成X M L的A S P,而不是作为一个更完整的
应用程序的一部分来调试。IE 5的一个很好的特性就是其内部有缺省X S L样式表,在一个X M L
文档没有明确指定所使用的解释样式表时可以实现X M L文档的解释(如上一个屏幕拷贝所示)。
它同时也具有展开/折叠功能,可以很好地实现对X M L的检查,以保证你得到的东西正是你所想
要的。
已经讨论过了如何从数据库生成X M L,下面我们看看如何调用X M L,以及如何显示管理者
可以编辑的表格。
15.7 客户端页面
客户端的开始页面d e f a u l t . a s p生成了包含两个表的一个表集,左边是F o r m TO C . a s p页面,生
668使用XML 高级编程
下载
成内容表格,右边是e d i t . a s p页面,可以编辑:
程序清单1 5 - 1 0
TO C图文框
F o r m TO C . a s p是包含X M L表单列表的页面。它包含了控制应用程序的逻辑,所以我们从讨论这
个页面开始。这个页面基本上是一个“核心”,所有的工作都是通过它里面包含的脚本完成的。页面
上只有两个按钮和一个< d i v >元素。xslresult <DIV>是一个占位符,它接收用X S L转换的X M L结果:
程序清单1 5 - 11
1. 显示两个视图
我们提到过表单具有双重特性(因为它们可以用名字或编号查询),所以,为了让用户在
X M L的两个视图之间切换,我们用两种X S L样式表之中的一种来转换它。为了进行转换,需要用
M S X M L建立两个D O M,一个用于存储刚用f o r m l i s t x m l . a s p生成的X M L,另一个保存转换的内容。
当事件O nLoad( )终止时, init( )函数马上加载刚刚生成的X M L,init( )函数在一个叫s o u r c e
的XML DOM中。然后它调用函数changeXSL( ),为我们想要的界面选择合适的结构。另一个
D O M叫s t y l e,它保存转换过的页面结果。
转换过的X M L放在< D I V >占位符之间,在这里用文档其他部分采用的C S S样式表来确定
X M L的显示格式。
下面是这个页面的全部代码,稍后将更详细地对其进行讨论:
程序清单1 5 - 1 2
第15章实例研究1—数据双重性使用669
下载
670使用XML 高级编程
下载
第15章实例研究1—数据双重性使用671
下载
672使用XML 高级编程
下载
第15章实例研究1—数据双重性使用673
下载
讨论过页面后,下面讨论一下位于页面中心的各种函数。
2. 函数清单
表1 5 - 1列出了对X M L文档进行操作的函数名称和作用。
表1 5 - 1
函数描述
init( ) 初始化代码
addNode( ) 向X M L树上添加一个新结点
updateNode( ) 更新X M L树上已存在的一个结点
deleteNode( ) 从X M L树上去除一个结点
update( ) 应用X S L转换并更新占位符< D I V >
changeXSL( ) 加载一个新的X S L文档
674使用XML 高级编程
下载
我们也使用表1 5 - 2中列出的几种函数。
表1 5 - 2
函数描述
setButtons( ) 对选择by name和by number浏览方式的按钮进行状态
设定(激活/休眠状态)
n a v i g a t e To( ) 接收一个表格编号并加载带选定表单信息的编辑屏幕
除了对X M L进行解释,我们在by name界面上还提供了一个D H T M L展开/折叠目录。表1 5 - 3
是支持这个目录的函数。
表1 5 - 3
函数描述
showAll( ) 展开树的所有分支并显示所有结点
hideAll( ) 折叠树的所有分支并隐藏第一级结点以外的所有结点
getChildElements( ) 得到某个给定标识的所有子结点(如果有)
document.onclick( ) 检查一个结点的等级,如果有子结点的话展开/折叠
(事件处理器)
我们在这里不准备讨论D H T M L的展开/折叠功能,但它们包含在下载的源代码中。我将只讨
论在X M L解释过程中起关键作用的那些函数。
3. 加载X M L表单
前面已经提到过当浏览器中的o n l o a d事件结束时,会运行下列初始代码:
程序清单1 5 - 1 3
第15章实例研究1—数据双重性使用675
下载
我们已经看到F o r m L i s t X M L . a s p是从数据库生成X M L文档的A S P页面的名称。init( )函数生
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(52)