我有一个现有的 xslt 脚本,它使用 FOP 创建 PDF,问题是当节点数超过一定限制时,在特定节点类型上执行应用模板时内存不足。为了解决内存问题,我需要将来自该模板调用的结果分解为几个<fo:page-sequence>
,但我不希望每个节点都有一个页面序列,更像是每个 100 个节点。
我的第一个想法是使用 position() 并简单地每 100 个添加新的序列标签,但由于 xslt 需要良好的格式,我不能有这样的开放标签。
所以,我的问题是,以 100 个块为单位迭代特定类型的所有节点的最佳选择是什么?
XML 源的外观示例
<var ID="V1"><subnodes/></var>
..
<var ID="V1000"><subnodes/></var>
目前处理与
<fo:page-sequence>
<xsl:apply-templates select="ns:var"/>
</fo:page-sequence>
想要的 FOP XML 结果将是创建几个页面序列的东西,每个页面序列中包含(例如)100 个已处理的 var 节点,而不是在一个页面序列中创建所有 1000 个的结果。
当前结果
<fo:page-sequence>
<formatted V1>
..
<formatted V1000>
</fo:page-sequence>
想要的结果
<fo:page-sequence>
<formatted V1>
..
<formatted V100>
</fo:page-sequence>
<fo:page-sequence>
<formatted V101>
..
<formatted V200>
</fo:page-sequence>
..
<fo:page-sequence>
<formatted V901>
..
<formatted V1000>
</fo:page-sequence>