当使用大型 xml 文件时 fop 由于缺少 ram(在我的情况下是 1.7gb 是限制)而崩溃,因此解决此问题的方法之一是使用此处描述的多个页面序列对象。但是没有描述如何使用它们......我试图做的是使用for-each“创建”一个新的页面序列对象,但似乎我失败了,当它达到 1.7gb 时 fob 崩溃了无论如何,内存
<xsl:template match="OurForm">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:call-template name="layout_master_template"/>
<xsl:for-each select="document"> //Hopefully this creates a new page-sequence object, doesn't it?
<fo:page-sequence master-reference="page" initial-page-number="1" force-page-count="no-force">
<fo:flow flow-name="xsl-region-body">
<fo:block xsl:use-attribute-sets="pageBlock">
<xsl:call-template name="MainTemplate">
<xsl:with-param name="PageCount" select="0"/>
</xsl:call-template>
</fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:for-each>
</fo:root>
</xsl:template>
MainTemplate 需要几百条记录并将它们打印到表中......
XML:
...
<document>
records
</document>
...
900 documents
...
<document>
records
</document>
每次从 xml 获取新文档时,for-each 是否都会创建一个新的页面序列对象?你将如何解决这个内存问题?