`
woniu1983
  • 浏览: 165666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【报表】 XSLT 解析普通XML生成表格型XML(一)

    博客分类:
  • XSLT
阅读更多
   需求要求:根据数据库中查询出的数据,导出报表, 电子表格形式, 可以使用MS Office 打开。
  
   最开始的想法:
   1.使用Apache的POI API将查询到的数据填写到Excel文档中,但思来想去觉得这不是一个Good idea,感觉类似硬编码,太生硬太粗暴;

   2.使用开源的一些报表工具:貌似很多工具都很花哨我的项目用不到,而且学习周期长,有些工具虽开源但文档收费(要命,按美金收,没文档很难整);
 
   最后考虑下来,决定尝试XSLT:
   1. 相对成熟的技术,使用的人多,可参考的例子也多;
   2. 学习周期短;
   3. 手边有一个现成的XSLT解析XML生成表格型XML(可以使用MS Office 2003以上版本打开,界面显示同Excel)的例子;

   学习及实践的Step:
   1. 首先,按照项目的需求,创建一个相应的表格型XML(可以使用MS Office 2003),模拟些假的数据,保存,然后使用文本编辑器打开查看其格式,对要生成的目标文件有个大体的了解;
   
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook ..........>
 <!--文档属性-->
 <DocumentProperties ......>
   .....
 </DocumentProperties>
 <!--Excel工作簿属性-->
 <ExcelWorkbook ....>
    .....
 </ExcelWorkbook>
 <!--定义共通样式供单元格调用-->
 <Styles>
    ....
 </Styles>
 <!--Excel的sheet-->
 <Worksheet ss:Name="报表-部门费用分配表">
   <Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="73" x:FullColumns="1"
     x:FullRows="1" ss:StyleID="s23" ss:DefaultColumnWidth="90"
     ss:DefaultRowHeight="18">
     <!--某一列的属性-->
     <Column ss:Index="8" ss:StyleID="s23" ss:Width="99.75"/>
     <!--某一行的属性-->
     <Row ss:AutoFitHeight="0" ss:Height="29.25" />
         <!--行中各单元格的值和属性-->
         <Cell />
         <Cell />
         ...
         ...
     </Row>
     ...
     ...
     ...
   </Table>
  </Worksheet>
  </Workbook>
 


  从上面可以看出:表格型的XML其结构还是很清晰的,包括数据是以何种方式列举并显示的。

     整个过程: 根据我们的源数据XML的结构,写一个XSL文件(相当于写一个逻辑处理代码,使用的是XSLT的API), 然后来解析(解析使用XSLT的引擎)这个源数据XML, 最后生成(或者说组合出)目标文件(一个表格型的XML)。

   此为第一弹,了解下目标文件:表格型XML的结构。未完待续。
    
0
0
分享到:
评论
3 楼 woniu1983 2011-12-28  
zhao260252 写道
你好,我想请问一下,xls是自己根据xml写的还是通过工具生成的?还有,“ 最后生成(或者说组合出)目标文件(一个表格型的XML)”是怎么生成的啊?以后打开这个表格,必须同时需要这三个文件,还是只要生成的这个啊?谢谢


不好意思,一直没登陆。
1. XLS是自己写的,先去简单学习下XSLT的API,看看Demo例子就可以了,先做简单的。
   这个XLS文件相当于一个解析转换器,它里面其实就是读取你的源XML里面的指定的数据,然后按照你要的形式组织这些数据,然后使用Java或者其他语言调用这个XLS文件去解析目标XML文件,然后就转换出来了。

2. 只要生成的文件就可以了,生成出来的是表格型XML,用MS Office2003双击打开就可以了。
   好像转Excel格式也可以。我当初只是选择的表格型XML。
2 楼 zhao260252 2011-07-10  
你好,我想请问一下,xls是自己根据xml写的还是通过工具生成的?还有,“ 最后生成(或者说组合出)目标文件(一个表格型的XML)”是怎么生成的啊?以后打开这个表格,必须同时需要这三个文件,还是只要生成的这个啊?谢谢
1 楼 woniu1983 2010-06-23  
今天做了一整天测试,累, 下次来写后续的·

相关推荐

Global site tag (gtag.js) - Google Analytics