修复:多个页面序列对象

时间:2012-05-14 11:35:43

标签: xslt xslt-1.0 xslt-2.0 xsl-fo apache-fop

当处理大的xml文件时,由于缺少ram而导致fop崩溃(在我的情况下是1.7gb,是限制),因此修复此问题的方法之一是使用多个页面序列对象,如所述{{3 }。然而,没有描述如何使用它们...而我试图做的是使用for-each“创建”一个新的页面序列对象,但似乎我失败了,当它达到1.7gb时fob崩溃了ram反正

<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是否都会创建一个新的页面序列对象?你会如何解决这个记忆问题?

0 个答案:

没有答案