FOPを使用してPDFを作成する既存のxsltスクリプトがあります。問題は、ノード数が特定の制限を超えたときに特定のノードタイプでapply-templateを実行すると、メモリが不足することです。メモリの問題を修正するには、そのテンプレート呼び出しから得られた結果をいくつか<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>
必要なFOPXMLの結果は、ページシーケンスの1000個すべての結果ではなく、(たとえば)それぞれに処理されたvarノードが100個ある複数のページシーケンスを作成するものになります。
現在の結果
<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>