【发布时间】:2014-01-07 12:27:51
【问题描述】:
我正在尝试将一些 XML 转换为适合打印的报告。到目前为止,一切都很顺利,除了一个部分。
这涉及相关行当前输出到的当前页码。我正在使用<fo:page-number/> 来获取当前页码,但是在我发现我不能在@ 987654322@,更别说改了。
所以,我目前正在考虑这样一种想法,即在每次迭代中,当前使用的节点都会引入一个新元素(或属性),其中包含当时出现的 fo:page-number 的值。然后,在下一次迭代中,我将从preceding-sibling:: 获取元素/属性,然后测试当前的fo:page-number 是否与该值不同。
可悲的是,我没有太多运气找到一种方法来做到这一点,而且我从谷歌搜索中得到的只是来自 w3fools 的大量结果。有谁知道这是否可行,如果可以,该怎么做?
【问题讨论】:
-
我不确定我是否理解您的逻辑 - 您使用 XSLT 生成 XSL-FO,然后使用 FO 处理器将生成的 XSL-FO 转换为渲染输出,并且仅在此阶段你知道特定的
<fo:page-number>会产生什么价值(XSLT 和 XSL-FO 处理器可能是同一个包的一部分,但在概念上它们是两个独立的阶段)。您不能在 XSLT 中使用由page-number标记生成的输出值。 -
嗯,真可惜。是否有任何其他函数(最有可能在 fo 中)允许将当前页码作为变量生成以用于逻辑?
-
你想在什么阶段使用
fo:page-number?在XSLT阶段(即把XML数据转换成XSL-FO),页码是未知的。但是您为什么不更清楚地说明您打算实现的目标(可能包括示例 XML 或描述输出) - 那么,也许有人可以提出另一个解决方案? -
根据我的发现,直到 XSLT 完成才执行分页过程,因此在这种情况下无法完成(因为它涉及在看似任意位置插入标题行)在页面的尺寸上)。这是关于在每个新页面的顶部插入额外的标题行,但是除非我有可以准确测量当前内容当前占用的空间量以及输出页面区域的高度的东西,否则我想不出任何其他方式:s
-
取决于您究竟打算做什么。页码值与是否输出附加页眉内容之间有什么关系?
标签: xml xslt insert xsl-fo xmlnode