在第一部分中,我介绍了关于使用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)
|