【发布时间】:2010-12-04 00:17:24
【问题描述】:
我一直在为 fop 0.95 的一些奇怪行为而苦苦挣扎(不知道我是否在做 出了什么问题,或者是否有解决方法)。
我有一个自动生成的 XML 如下:
(注意:这是一个模拟示例,但我需要的地方非常相似 在作业结束时使用类似于 roleTypes 的几列生成报告)
我的目标是将以上数据以pdf格式显示如下:
姓名 |开发 |问答 |文档 | -------------------------- 约翰 | 100 | | | 最大 | 60 | | | 亨利 | | 80 | | 彼得 | | 40 | |我使用 xsl:for-each 循环 RoleTypes/* 元素来定义表列,并且 然后动态构造 XPath 表达式(使用 exslt 的 dyn:evaluate)来获得 对应于角色(dev、qa 和 doc)的单元格的数据。
如果我通过预处理器 (xsltproc) 运行我的 xsl 样式表,它会按预期工作 生成 .fo,然后使用 fop 将此 .fo 转换为 pdf。 但是,当我直接使用 fop 时(即单步: fop -xml blah.xml -xsl blah.xsl -pdf out.pdf),我得到了奇怪的结果——只有第一列的数据(即第一列 'RoleTypes' 的子元素,在本例中 - 'dev')和其余列为空白。 我也尝试过首先使用 fop 本身(-foout 选项)生成 .fo,然后使用 fop 生成 pdf,但得到相同的结果,即数据仅显示在 对应于 RoleTypes 元素的第一个子元素的列。 这是 fop 的错误吗(因为它似乎可以识别 dyn:evaluate,但是 没有做完整的工作)?
我真的很想使用单步 fop,这样我就不需要了 在客户端上部署其他工具(如 xsltproc 等)。
这是我一直在使用的样式表的关键部分:
谢谢
【问题讨论】:
标签: xslt dynamic apache-fop evaluate