在不同格式的XML文档之间相互转换(一)基本转换
本文将试着讨论不同格式XML文档之间相互转换的主题,比如怎样把格式化的纯数据转换成HTML文档,VML文档,或其他格式的XML文档,进一步,如何按每个具体的要求从源数据(元素/文本/属性)动态计算出目标数据(元素/文本/属性),再进一步,如何为生成的目标数据搭载特定的js代码,更进一步,如何使目标数据成为它的容器元素乃至父页面的 一部分,并实现动态交互。最后,如何做好垃圾清理工作,尤其对于数据更新频繁的容器,能否及时清除过期的文档结构和对象引用,同时又不影响新装入新内容和生成新对象。
一个XML文档转换工具至少应该具备两部分功能,模板和寻址。模板用来用来定义目标文档的结构,寻址功能负责在源文档中按指定路径返回数据,将寻址结果插入模板的特定位置,然后解析模板,生成目标文档,这个过程可以实现数据的静态转换。如下面代码。
源文档和模板文档
student.src.xml
|
student.tpl.xml
|
转换代码
1 var srcdoc = $System.XML.XMLUtil.loadXMLFile("xmltest\\student.src.xml");
2 var tpldoc = $System.XML.XMLUtil.loadXMLFile("xmltest\\student.tpl.xml");
3 var tdoc = $System.XML.XMLUtil.XDOC.transformDoc(srcdoc , tpldoc);
4 $("div005").innerHTML = tdoc.xml;
转换结果
模板文档中中attribute元素用来生成目标文档中特定元素的属性,foreach元素负责遍历源文档中特定元素的集合。
代码运行试验,下载上一篇日志里的压缩包,解压,在test001.hta文件的同级目录下建立xmltest文件夹,将源文档存为student.src.xml,目标文档存为student.tpl.xml,然后拷贝转换代码到test001.hta中,运行,就可以看到转换结果了。