拼吾爱程序人生

首页 » 其他编程 » XML » 使用XML+XSLT实现业务表单
cobra - 2008-4-29 6:26:00
文/lijun4017  出处/博客园

其实这是我的一个两年前的项目中用到的东西,今天刚好翻以前的代码,看到,觉得也是自己想出来的东西,写写也无妨,哪怕是为了填充我空虚的blog。这个是一个智能客户端,但是里面涉及的表单非常之多,统计一下,有200个张。本来也不是问题,用FORM一个一个画也能够画出来,但是这样有几个缺点,一方面导致智能客户端的dll变的比较大,每次更新的时候,都要下载整个dll;一方面分工不好分,原来那个公司那时候只有我用过winform,老板就把这个任务分配给我了。但是我一个人,要做那么多的表单,而且在比较短的时间内,也不是说不可能,太累了。我想想看能不能有其他方法。

当时XFORM的概念相当热,我也看了一些资料,觉得还是不太成熟,没有敢用。

后来看了微软office2007中的infopath,感觉功能非常强,它可以实现用infopath设计表单,然后用表单控件把表单嵌入到winform中去,并且可以实现表单中的数据加载和保存功能。但是唯一的遗憾就是如果要使用它,就必须要客户机器上安装office2007,这样就不太现实了。

最后来想到的是用xml+xslt是动态生成静态页面,然后把静态页面嵌入在winform的浏览器控件里面,并且屏蔽一些浏览器控件的一些属性,看起来就和winform设计的表单差不多了。这样就方便多了,我可以叫美工帮我设计表单,叫其他的asp.net的程序员帮忙做XML和XSLT以及里面的javascript脚本。后来的项目进展说明了,这种方式真的大大的提高了工作效率,也让我轻松了不少,嘿嘿,又偷懒了。

下面我说说具体的过程吧。
1.首先我在设计表的时候,把整个表单的内容设计成XML类型的字段,当然,其他需要搜索的字段还是要单独建字段,并且保存xslt文件的版本号。
2.设计表单的XML结构,下面是示例。

Code


3.设计表单的XSLT文件,下面是示例。

Code


4.在XSLT文件中加入JS脚本,用户验证用户输入,收集表单数据,加载表单数据等。(这里涉及到JS代码和浏览器控件所在的winform窗体的代码的相互调用。)
1)首先把winform窗体的类加上这个属性[ComVisible(true)]

2) 在winform窗体里面写上public的方法

Code


3)在XSLT文件里面的JS代码中调用这个方法

Code


4)在XSLT文件中定义JS方法

Code


5)在winform窗体中调用JS方法
//调用JS方法

Code


5.在显示页面的时候,我先使用下面的代码把XSLT和XML转换成HTML文件,存放在临时文件夹中,然后把浏览器控件的URL指向它。

Code


6.在用户点击保存的时候,我通过XSLT中定义的JS代码,直接把用户保存的数据以XML的方式返回给winform的代码,然后保存到数据库中去。

Code


7.删除刚才产生的临时文件。

 您可能对 [XML] 的这些文章也感兴趣:

XML入门的常见问题(四)
W3C有意推广XML新标准 为兼容性吵翻了天
用XMLHTTP对象Post表单
利用ASP和XML制作菜单导航系统
XML技术系列讲座(4)XML的显示—XSL样式单(下)
Asp.net Xml开发网络硬盘
XML简介
Xml学习之“刘姥姥进大观园“-----xml概述
学习xml之"给个理由先"
XML入门精解之结构与语法
1
查看完整版本: 使用XML+XSLT实现业务表单
Modify by pin5i DZNT_ExpandPackage 2.1.3237 2007-2008 pin5i.com
  Total Unique Visitors: