`

【报表】 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  
今天做了一整天测试,累, 下次来写后续的·

相关推荐

    Birt XML详解

    3. **解析XML**:Birt提供了两种解析方式——XPath和XSLT。XPath用于定位XML文档中的节点,而XSLT则用于转换XML数据。 4. **定义数据集**:通过XPath表达式选择需要的数据,并创建数据集。数据集是Birt中数据的逻辑...

    用xml 和 xsl 实现二维报表

    在我们的场景中,(StatisDocumentByDepart).xsl是用于解析XML数据并将其格式化为报表的XSL样式表。XSLT(XSL Transformations)是XSL的一个子集,专门用于转换XML文档。以下是一个简单的XSLT示例,它将XML数据转换为...

    XML应用开发(软件品牌)-1期 第5单元 单元测试卷答案-使用XSLT显示XML文档.doc

    第二个例子同样生成表格,但增加了使用`&lt;xsl:choose&gt;`进行条件判断,可能用于对特定的CD元素进行特殊处理。 【总结】 XML和XSLT的结合使用使得数据的表示和呈现变得灵活多样。通过XSLT,开发者可以定制XML数据的...

    XML+XSL/FO生成PDF文件Demo

    总之,XML+XSL/FO+FOP技术栈提供了一种强大的方法,将结构化的XML数据转换为专业品质的PDF文档,适合于各种业务场景,如自动化报表生成、电子出版物制作等。熟悉这一流程对于IT从业者,尤其是从事数据处理、文档管理...

    Asp报表设计源码 xml数据交换

    综上所述,Asp报表设计源码和XML数据交换是一个深度学习的话题,涵盖了Web开发中的许多核心概念,包括动态网页生成、数据绑定、XML处理和客户端服务器通信。对这个主题的深入理解和实践,对于提升Asp应用开发能力,...

    birt xml数据源

    - **API返回的XML数据**:当API返回XML格式的结果时,可以使用BIRT解析并生成报表。 - **自定义数据交换格式**:企业内部可能有基于XML的自定义数据格式,BIRT提供了一个灵活的平台来处理这些数据。 7. **MHT文件...

    xml publisher介绍

    无论是简单的报表还是复杂的多页文档,XML Publisher都能胜任,是企业IT部门不可或缺的工具之一。在实际应用中,理解XML数据结构、掌握XSL-FO模板设计以及熟练使用XML Publisher的各项功能,将有助于你更好地利用这...

    xml的班级template应用

    当XSLT处理器应用`ex6.xsl`到`banji.xml`时,它会根据模板的匹配规则对XML文档进行转换,生成一个新的HTML文档,该文档可以被浏览器解析并显示为一个包含班级所有学生信息的表格。 总结来说,XML和XSLT的结合使用...

    通过xml格式存为excel文件

    在IT行业中,Excel文件是一种广泛使用的数据存储和分析工具,特别是在数据分析、报表生成以及数据交换等领域。XML(Extensible Markup Language)则是一种用于存储和传输数据的标记语言,它的结构化特性使得它非常...

    ASP与XML 高级编程

    2. **数据解析**:ASP可以使用DOM(Document Object Model)或SAX(Simple API for XML)解析XML文档。DOM将整个XML文档加载到内存中,形成一个树形结构,便于访问和操作;SAX则采用事件驱动的方式,逐个处理XML元素...

    用XSL把XML转化在EXCEL导出

    3. XSLT转换:使用XSLT处理器(如Saxon或Xalan)对XML和XSL进行解析和转换。 4. 输出Excel:转换后的结果通常为一个临时的HTML或XML文件,可以被浏览器或专门的工具识别并呈现为Excel格式。 5. 反台处理:服务器端的...

    java developer xalan tools.zip

    2. **数据格式化**:对于处理结构化数据,如报表或日志,Xalan可以将XML数据格式化为易于阅读的文本或表格形式。 3. **动态文档生成**:在服务器端,Xalan可以结合Java后端逻辑动态生成定制化的HTML或其他文档格式,...

    iReport5.6&Jasperreport;开发报表所需全部jar.zip

    例如jasperreports.jar,它包含了报表引擎,负责解析JRXML文件并生成报表。 2. **iReport Designer**: 这是iReport的运行时库,如ireport-designer.jar,它提供了报表设计界面和相关功能。这些JAR文件帮助开发者在...

    跟我学XSL(pdf)

    - XSLT通过模板匹配实现转换,每个模板对应XML文档中的一个元素。 - `&lt;xsl:template&gt;`定义模板,`match`属性指定匹配的XML元素。 - `&lt;xsl:apply-templates&gt;`用于在处理过程中应用其他模板。 - `&lt;xsl:value-of&gt;`...

    excel的jar包.rar

    6. **dom4j-1.6.1.jar**: 这是一个用于处理XML的Java库,提供了强大的文档对象模型(DOM)、简单API(SAX)和可扩展样式表语言转换(XSLT)支持。在处理Excel时,dom4j可能被用来辅助解析或生成XML数据。 在Java...

    ASP.NET网络打印

    - 对大型XML文件的解析效率较低。 - 页面首次加载可能会有延迟。 #### 七、XSL与XSLT转换 XSL(Extensible Stylesheet Language)和XSLT(XSL Transformations)是用于转换XML数据的强大工具。通过定义XSL样式表...

    【转】通用从数据库导出excel、excel导入数据库组件

    7. dom4j-1.6.1.jar:DOM4J,一个Java XML API,用于处理XML、XPath和XSLT。 8. junit-3.8.1.jar:JUnit测试框架的早期版本,用于编写和运行单元测试。 9. commons-logging-1.1.jar:Apache Commons Logging,一个...

Global site tag (gtag.js) - Google Analytics