开发者社区


Web服务 | ASP/ASP.Net | JSP | PHP/Perl | 网站设计
首页 - WEB技术
Web技术
全文搜索:   

从XML建立RTF报表(2)
作者: Builder.com
2004-03-31 17:47:00


本文译自Builder.com,未经许可请勿转载

在第一部分中,我介绍了关于使用XSL转换把XML创建成RTF格式文件的构想。达成此目的的第一步就是建立一个模板,我们可以在这个模板上建立我们的XSL样式表。我利用Microsoft Word创建了一个RTF格式的文档,这个文档具有页眉,在文档的正文部分建立了三列。然后将这个文档保存为RTF格式。

接下来,我们就可以准备用于转换的XSL样式表语言了。要用合适的标示来创建XSL样式表语言,你可以参考以下代码:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:fn="http://www.yourwebsite.com/rtf">
<xsl:output method="text"/>
<msxsl:script language="JScript" implements-prefix="fn">
</msxsl:script>
<xsl:template match="/">
</xsl:template>
<xsl:template match="row">
</xsl:template>
</xsl:stylesheet>

这段代码的功能是建立了一个输出为“Text”的空样式表,并为脚本以及两个模板定义节点。然后下一步就是引入RTF信息,并在XML中的每个行节点处使用行模板。

在RTF输出之前,你必须对RTF规范有一个基本的了解。RTF文件包含以下格式。RTF的<header>部分用于定义字体、颜色、类型、页眉页脚、页大小等等。而<document>部分则是使用上述定义的类型、颜色等属性的正文部分。

正是因为我们需要逐行的对RTF文档中的表格进行替换,所以我们要仔细的考虑如何定义RTF中的表格形式。简单来说,用 { rowd. . . ow}来进行行定义。要在RTF文档中找到此行的最好的办法就是,从RTF文档的最后开始,然后往前搜索,寻找 ow控制字码然后通过 roed来确定结束行。我们的RTF文件中的正文部分只包含了一行。

这里有一个结束行的例子

这一行中包含了许多类似于格式之类的信息,但是我们现在只需要关注的是位于这行开头的 rowd控制字码,位于行尾的 ow控制字码以及EMPLOYEE_NAME, BUSN_PHONE和MAIL_DROP的位置。你一会发现在定义行的时候, rowd用到了两次,当你付支行信息的时候记住这一点。

由此看来,你所要做的就是把RTF文档中的信息剪切下来,然后粘贴到你的XSL样式表的行模板中去。请记住你是从RTF文档的什么位置剪切下行文本的,当你看到EMPLOYEE_NAME, BUSN_PHONE, MAIL_DROP的时候,用<xsl:value-of select="EMPLOYEE_NAME"/>以及这类似的指令来替换掉上面你记下的文本。

然后你的行模板将会变成以下形式

RTF文件的剩余部分将会被复制粘贴到你的样式表的/template中。在你先前剪切行文本的地方插入<xsl:apply-templates select="//row"/>,你就可以在XML中之行转换了,并得到一个RTF格式的文档。

在第三部分中,我将阐述怎样在RTF文件的页眉中建立一些有用的文档信息。此外,我将关注于在XML上运行转换的代码,并且告诉你怎样格式化你得到的返回信息,从而为你的RTF文件启用默认文字处理软件。



责任编辑:李宁

欢迎评论投稿


相关精彩好文:
  • 从XML建立RTF格式文档(1)

  • 声明:
    Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
    近期相关报道:
    实用技术文档
    J2me XML
    C/C++ C#
    Java Oracle
    Mysql .Net
    VB.NET CSS
    SQL Server 数据库
    SQL UNIX
    Linux Jsp
    PHP Perl
    Javascript IIS
    XHTML ColdFusion
    ASP/ASP.NET Apache
    AJAX
    订阅技术邮件
    订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
    应用开发管理
    VS.NET 周刊
    Database 周刊
    WEB Service周刊
    JAVA 周刊
    IT 认证
    Windows服务器周刊
    互联网开发
    当Windows Server 2008专家得5000元现金大奖
    CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
    CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
    Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
    ZDNet 公司标识是 CNET Networks公司注册服务商标。
    中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号