转换XML文档的模板类及模板文档格式
不太会考虑弃xsl不用的原因,可能是因为懒?懒得学?最早在06年写了一个文档转换的方法,当时很多工具方法集合在一起,凑到XMlDOC静态类中。目的是通过类似XMLDOC.transformDoc(srcDoc , tplDoc)这样的方式,取得转换后的结果文档。由于当时水平还不如现在这样,所以代码写的比较乱,甚至四年之后,经过几次不是很正式的修补改进之后,依然比较乱。但总的感觉还是比较好用的。其实思路蛮简单,就是不想让服务器参与太多数据外观的工作,最好是一点都不要参与,只负责处理请求,返回纯粹的结果;浏览器负责使用模板文档和结果数据生成数据外观。最初的实现,仅仅是生成一堆html并显示之,但这显然无法满足复杂应用对界面交互性的要求,也就是说数据外观不能使铁板一块硬邦邦的,而应该是生动灵活的,这就要求在生成文档的同时,生成文档对应的程序代码。这一点也不难做到,只要实现了“转换过程中的代码即时执行”,再使用guid作为与结果文档一一对应的标识符,大事即成。甚至可以与很多js库中所使用的“控件”概念结合,使用控件作为代码独立的最小单元,防止众多代码在横向上互相污染造成混乱。而控件之间以“父子孙”控件树的方式组织并互相引用,在纵向上厘清所有控件的关系。这里的引用似乎以控件guid名称的方式而非直接引用控件对象的方式进行会比较合适,当然,需要建立一个guid注册机制,将对实际对象的引用放到一个全局变量里,避免将直接的对象引用硬编码到程序中,而是采取执行过程中根据guid动态生成对象引用并将之放入当前环境下的局部变量中,这样离开环境的时候,局部变量自动销毁,引用撤销。很多细节需要在发上代码的时候进一步探讨解释,代码很快贴上,欢迎有兴趣的朋友一起研究讨论。总之,仅使用一组数据而无需编写一行代码就可以将之呈现为美丽的图表,这样的诱惑我实在无法抵挡。